是否有任何有效的快捷方法可以从python词典中一次删除多个键?
例如;
x = {'a': 5, 'b': 2, 'c': 3}
x.pop('a', 'b')
print x
{'c': 3}
答案 0 :(得分:13)
x = {'a': 5, 'b': 2, 'c': 3}
del x['a'], x['b']
print x
{'c': 3}
答案 1 :(得分:2)
我使用的一般形式是:
示例:
假设我要删除映射中的所有字符串键。制作一份清单:
>>> x={'a':5,'b':2,'c':3,1:'abc',2:'efg',3:'xyz'}
>>> [k for k in x if type(k) == str]
['a', 'c', 'b']
现在我可以删除那些:
>>> for key in [k for k in x if type(k) == str]: del x[key]
>>> x
{1: 'abc', 2: 'efg', 3: 'xyz'}
答案 2 :(得分:2)
我已经测试了三种方法的性能:
d = dict.fromkeys('abcdefghijklmnopqrstuvwxyz')
remove_keys = set('abcdef')
# Method 1
for key in remove_keys:
del d[key]
# Method 2
for key in remove_keys:
d.pop(key)
# Method 3
{key: v for key, v in d.items() if key no in remove_keys}
这是一百万次迭代的结果:
所以del
是最快的。
但是,如果要安全删除 ,以免因KeyError错误而删除它,则必须修改代码:
# Method 1
for key in remove_keys:
if key in d:
del d[key]
# Method 2
for key in remove_keys:
d.pop(key, None)
# Method 3
{key: v for key, v in d.items() if key no in remove_keys}
还是,del
是最快的。