簡體   English   中英

比較兩個 collections.defaultdict 並刪除相似的值

[英]Compare two collections.defaultdict and remove similar values

我有兩個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'的相同值。

由於d1d2Counter對象,因此它們實現的減法不同於集合。

來自collections.Counter (強調我的):

加法和減法通過增加或減去相應元素的計數來組合計數器。

set.differenceset - other

返回一個新集合,該集合中的元素不在其他集合中。

也就是說,您可以使用Counter.keys並像集合一樣使用difference

keys = d1.keys() - d2.keys()
# keys = {'bye', 'ok'}

out = {k: d1[k] for k in keys}
# out = {'bye': 55, 'ok': 33}

使用字典理解

d3 = {k: v for k, v in d1.items() if k not in d2}
print(d3)

結果:

{'bye': 55, 'ok': 33}

試圖從d1中刪除也在d2

for k in d2:
    d1.pop(k, None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM