python - 从列表中删除字典的子集

标签 python list containers

这真的只用一个例子很容易解释,所以要从字典中删除列表的交集,我通常会这样做:

a = {1:'', 2:'', 3:'', 4:''}
exclusion = [3, 4, 5]

# have to build up a new list or the iteration breaks
toRemove = []
for var in a.iterkeys():
    if var in exclusion:
        toRemove.append(var)

for var in toRemove:
    del a[var]

这可能看起来像是一个不寻常的例子,但令人惊讶的是我不得不做这样的事情的次数。用集合来做这个会好得多,但我显然想保留字典的“值”。

这个方法很烦人,因为它需要两个循环和一个额外的数组。有没有一种更清洁、更有效的方法。

最佳答案

考虑 dict.pop :

for key in exclusion:
     a.pop(key, None)

key 不是键时,None 防止 pop 引发异常。

关于python - 从列表中删除字典的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167120/

相关文章:

java - 如何从列表中选择随机 char 和 double 并将它们输出到配对在一起的字符串中

bash - 如何使用 bash 在 docker 容器中获取僵尸进程

c++ - 不同类型数据的注册

python - 在pytest中模拟一个连接类

python - 填充 numpy 数组的指定维度

python - 将不同服务器上的 MySQL Server 数据库中的表复制到我的计算机

python - 无法使用 PyCall 从 Python 调用 julia 代码,其代码使用 Pycall 调用 python

python - 如何将字典中的列表 append 到其自己的列中?

c - 使用节点结构时的段错误

docker - 不使用卷的情况下备份 docker