给定以下字典和集合:
d = {1 : a, 2 : b, 3 : c, 4 : d, 5 : e }
s = set([1, 4])
我想知道是否可以删除所有不包含在集合中的字典条目(即 2、3、5)。 我知道我可以通过遍历字典并检查每个键来实现这一点,但由于我是 Python 的新手并且到目前为止遇到了许多“快捷方式”,我想知道是否存在针对这个特定问题的快捷方式。
最佳答案
d = {1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e' }
s = set([1, 4])
由于在迭代字典时不应修改字典,因此您有两种创建新字典的可能性。
一种是从旧字典过滤掉值创建一个新字典:
d2 = dict((k,v) for k,v in d.iteritems() if k in s)
第二个是提取键,将它们与 s
-set 相交并使用它们构建一个新字典:
d2 = dict((k, d[k]) for k in set(d) & s)
第三种是直接从d
中移除元素:
for k in set(d) - s:
del d[k]
关于python - 删除不在集合中的字典条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9735504/