在迭代过程中,在Python中添加新密钥或附加到字典中的旧密钥的最
发布时间:2020-12-20 12:15:49 所属栏目:Python 来源:网络整理
导读:在不同来源的字典中编译数据时,这是一种常见情况: 假设你有一个存储事物列表的字典,比如我喜欢的东西: likes = { 'colors': ['blue','red','purple'],'foods': ['apples','oranges']} 和第二个字典,其中包含一些相关的值: favorites = { 'colors':'yellow
在不同来源的字典中编译数据时,这是一种常见情况:
假设你有一个存储事物列表的字典,比如我喜欢的东西: likes = { 'colors': ['blue','red','purple'],'foods': ['apples','oranges'] } 和第二个字典,其中包含一些相关的值: favorites = { 'colors':'yellow','desserts':'ice cream' } 然后,您想迭代“favorites”对象,并使用“likes”字典中的相应键将该对象中的项目附加到列表中,或者向其添加一个新键,其值为包含“in”中值的列表最爱”. 做这件事有很多种方法: 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 ,其中默认值是新的列表实例.
>>> import collections >>> mydict = collections.defaultdict(list) 通过这种方式,调用.append(…)将始终成功,因为如果存在不存在的键,则将在新的空列表上调用append. 您可以使用之前生成的列表来实例化defaultdict,以防您从其他来源获得dict喜欢,如下所示: >>> mydict = collections.defaultdict(list,likes) 请注意,使用list作为defaultdict的default_factory属性也将在documentation中作为示例进行讨论. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |