gpt4 book ai didi

python - 在 Python 迭代期间添加新键或附加到字典中的旧键的最有效方法?

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:49 25 4
gpt4 key购买 nike

以下是在不同来源的字典中编译数据时的常见情况:

假设您有一本字典,其中存储了事物列表,例如我喜欢的事物:

likes = {
'colors': ['blue','red','purple'],
'foods': ['apples', 'oranges']
}

还有第二个字典,里面有一些相关的值:

favorites = {
'colors':'yellow',
'desserts':'ice cream'
}

然后您想要遍历“favorites”对象,并使用“likes”字典中的适当键将该对象中的项目追加到列表中,或者向其添加一个新键,其值是一个包含“收藏夹”中的值。

有几种方法可以做到这一点:

for key in favorites:
if key in likes:
likes[key].append(favorites[key])
else:
likes[key] = list(favorites[key])

for key in favorites:
try:
likes[key].append(favorites[key])
except KeyError:
likes[key] = list(favorites[key])

还有更多......

我通常使用第一种语法,因为它感觉更像 pythonic,但如果有其他更好的方法,我很想知道它们是什么。谢谢!

最佳答案

使用collections.defaultdict ,其中默认值是一个新的 list 实例。

>>> import collections
>>> mydict = collections.defaultdict(list)

以这种方式调用 .append(...) 总是会成功,因为在键不存在的情况下 append 将在新的空列表上调用.

您可以使用先前生成的列表实例化 defaultdict,以防您从其他来源获得字典 likes,如下所示:

>>> mydict = collections.defaultdict(list, likes)

请注意,使用 list 作为 defaultdictdefault_factory 属性也在 documentation 中作为示例进行了讨论。 .

关于python - 在 Python 迭代期间添加新键或附加到字典中的旧键的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1553467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com