我有一个字典和一个列表:
dictionary = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
remove = ['b', 'c', 'e']
我需要拆分"dictionary"使用"删除"进入两个字典。这个想法是删除"remove"从"dictionary"但我不想丢弃它们,而是想把它们保存在一本新字典里。我想要的结果是
old_dictionary = {'a':1, 'd':4, 'f':6}
new_dictionary = {'b':2, 'c':3, 'e':5}
获得"new_dictionary">
new_dictionary = {}
for key, value in dictionary.items():
if key in remove:
new_dictionary[key] = value
我如何找到"字典"one_answers"字典"的区别?和";new_dictionary"获取"old_dictionary"?"我想我只能用not in remove...
来循环但是对于字典来说有没有类似于setdifference的好技巧?
一种方法是在循环中使用dict.pop
。dict.pop
方法移除键并返回它的值。因此,在每次迭代中,我们从dictionary
中删除remove
中的一个键,并将该键及其值添加到new_dict
中。在迭代结束时,dictionary
将从remove
中删除所有键。
new_dict = {k: dictionary.pop(k) for k in remove}
old_dict = dictionary.copy()
输出:
>>> new_dict
{'b': 2, 'c': 3, 'e': 5}
>>> old_dict
{'a': 1, 'd': 4, 'f': 6}
添加else
new_dictionary = {}
old_dictionary = {}
for key, value in dictionary.items():
if key in remove:
new_dictionary[key] = value
else:
old_dictionary[key] = value
使用else:
将其放入另一个字典
new_dictionary = {}
old_dictionary = {}
for key, value in dictionary.items():
if key in remove:
new_dictionary[key] = value
else:
old_dictionary[key] = value
dict.keys()
或dict.items()
可以像与其他可迭代序列的集合一样操作:
>>> dictionary = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> remove = list('bce')
>>> new_dict = {key: dictionary[key] for key in remove}
>>> new_dict
{'b': 2, 'c': 3, 'e': 5}
>>> dict(dictionary.items() - new_dict.items())
{'d': 4, 'f': 6, 'a': 1}
然而,从性能上来说,这种方法不如得分最高的答案。