python - 删除不在集合中的字典条目

标签 python python-2.7

给定以下字典和集合:

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/

相关文章:

python - 在需求文件中添加什么

python - 我应该使用 "self"来定义不需要从外部访问的类实例化变量/对象吗?

python - 为什么我不能在 python2.7 中解码 ‘utf8’ 字符串?

python - Pandas 。 pd.read_csv KeyError :not in index error

python - 按数据帧按仅不到一秒的值进行分组 - pandas

python - 调试器和 cpu 仿真器不检测自修改代码

python - 从折线获取曲线以创建细节线

Python Matplotlib 直方图 bin 移位

Python 从字符串中删除嵌套的 unicode 'u' 符号

python - 如何删除列表中非空白元素之间的空白元素?