在Python中,如何在一个字典中查找在另一个字典中没有对应项的键?实际的问题是,我有一个注册人员字典和一个每日参与的词典,我试图找到已注册但未参与的人员,或者正在注册词典中而不在参与词典中的人员。
在Python食谱中,我找到了有关交集登记和参与或两个字典的交集的良好代码:
print "Intersection: ", filter(enrollments.has_key, participation.keys())
但是我不知道如何将这种逻辑扩展到正面(?)情况。我试过将not放在join.keys()前面,但出现错误。有没有办法将过滤器中的逻辑扩展到我的问题,或者完全采用其他方法来解决?
使用键上的集合来查找差异:
>>> P = dict(zip('a b c d'.split(),[1,2,3,4]))
>>> E = dict(zip('a b e f'.split(),[6,7,8,9]))
>>> set(P)-set(E)
{'d', 'c'}
>>> set(E)-set(P)
{'f', 'e'}
另外,您可以使用字典理解。这是一种跨字典映射功能和/或过滤内容的方法。语法的含义是返回每个键的key:value对和字典项中的值,而该键不在另一个字典中:
>>> {k:v for k,v in P.items() if k not in E}
{'d': 4, 'c': 3}
>>> {k:v for k,v in E.items() if k not in P}
{'f': 9, 'e': 8}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句