我有两个Python字典:
A = {1: 27, 3: 41, 7: 26, 11: 32, 12: 23, 14: 23, 15: 37, 18: 27, 21: 35, 23: 12, 25: 33, 26: 7, 27: 1, 29: 14, 32: 11, 33: 25, 35: 21, 36: 27, 37: 15, 38: 25, 39: 23, 41: 3, 44: 27}
和
B = {1: 27, 3: 41, 7: 26, 11: 32, 12: 23, 15: 37, 18: 27, 21: 35, 26: 7, 29: 14, 32: 11, 33: 25, 35: 21, 36: 27, 39: 23, 41: 3, 44: 27}
我想从字典A中删除字典B中存在的所有数值。这是指如果字典B中存在一个作为键或值的数字,则必须从其键或从字典A中完全删除该数字。值(即使数字多次出现在其中一个值中)也是如此。
所以我想要的输出应该是
38
因为其余所有数字都出现在字典B和字典A中,但是38(在眼球中)是B中唯一的。
到目前为止,我已经尝试了以下方法:
C = {k: v for k, v in A.items() if k not in B}
这给了我:
C = {14: 23, 23: 12, 25: 33, 27: 1, 37: 15, 38: 25}
显然,这不是我想要的。我也尝试过:
C = dict(A.items() - B.items())
也没用。
任何帮助将不胜感激。
您应该使用集合。集没有重复项。您可以找到两组的并集,相交和差。下面的代码将每个字典的键和值变成集合,并创建键和值的并集。然后找到两组之间的差异。
a_set = set(A.keys()).union(set(A.values()))
b_set = set(B.keys()).union(set(B.values()))
print(a_set.difference(b_set))
#output:{38}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句