python - 比较两个 collections.defaultdict 并删除相似的值
问题描述
我有两个collections.defaultdict
并试图从中删除值d1
也在d2
.
from collections import Counter, defaultdict
d1 = Counter({'hi': 22, 'bye': 55, 'ok': 33})
d2 = Counter({'hi': 10, 'hello': 233, 'nvm': 96})
理想结果:
d3 = set()
d3 = ({'bye':55, 'ok':33})
到目前为止,我已经尝试过:
d3 = set()
d3 = d1 - d2
print(d3)
Counter({'bye': 55, 'ok': 33, 'hi': 12})
但这保持相同的值,'hi'
即使我想删除所有相似的值。
解决方案
因为,d1
并且d2
是Counter
对象,它们实现的减法不同于集合。
来自
collections.Counter
(强调我的):加法和减法通过增加或减少相应元素的计数来组合计数器。
返回一个新集合,该集合中的元素不在其他集合中。
也就是说,您可以像集合一样使用Counter.keys
和使用。difference
keys = d1.keys() - d2.keys()
# keys = {'bye', 'ok'}
out = {k: d1[k] for k in keys}
# out = {'bye': 55, 'ok': 33}
推荐阅读
- reactjs - 在 Netlify 上部署后未应用 Tailwind 样式
- shopify - Shopify 如何清除购物车的属性?
- r - 在ggplot中制作双条形图
- javascript - 为什么 event.button 在 Chrome 中无法与 mousedown 事件一起正常工作?
- selenium - 从 python 中的 URL 获取 html 和图像:HTTP 错误 403 或带有验证码的受 Cloudflare 保护的页面
- c# - 如何签署认证?
- python - 加入索引值 + 1 加入错误
- javascript - 从 json.parse 检索某些字段以用作变量
- xcode - 不支持所选 ios 设备创建存档
- reactjs - 如何有条件地调整列大小以适合 Ag-Grid