字典差异类似于集合差异



我有一个字典和一个列表:

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.popdict.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}

然而,从性能上来说,这种方法不如得分最高的答案。

相关内容

  • 没有找到相关文章

最新更新