从Python词典中弹出许多元素的最佳方法

时间:2011-03-17 01:36:08

标签: python dictionary

这是我的代码:

a = dict(aa='aaaa', bb='bbbbb', cc='ccccc', ...)
print(a.pop(['cc', ...]))

但这会引发错误。 从python词典中弹出许多元素的最简单方法是什么?

5 个答案:

答案 0 :(得分:21)

简单如何:

for e in ['cc', 'dd',...]: 
  a.pop(e)

答案 1 :(得分:20)

使用列表理解:

a = {'key1':'value1','key2':'value2','key3':'value3'}
print [a.pop(key) for key in ['key1', 'key3']]

答案 2 :(得分:4)

如果我理解你想要什么,这应该可以解决问题:

print [a.pop(k) for k in ['cc', ...]]

但要小心,因为pop具有破坏性,即它会修改你的字典。

答案 3 :(得分:1)

这里是单行代码,适用于任意长字典,在这种情况下:

print([a.pop(key) for key in list(a.keys()) if key >= 'cc'])

为说明:

a = dict(aa='aaaa', bb='bbbbb', cc='ccccc', dd='ddddd', ee='eeeee')
print([a.pop(key) for key in list(a.keys()) if key >= 'cc']) # => ['ccccc', 'ddddd', 'eeeee']
print(a) # => {'aa': 'aaaa', 'bb': 'bbbbb'}

注意:只要字典键按如下方式“递增”,它将起作用:aabbcc,{{1} },ddee,...

答案 4 :(得分:0)

a={'aa':'aaaa','bb':'bbbbb','cc':'ccccc'}
remove = ['aa', 'cc']
newA = dict([(k, v) for k,v in a.items() if k not in remove])