在将两个字典合并在一起的python中的字典中使用update函数时,两个字典具有相同的键,显然它们将被覆盖。
一个简单的例子:
simple_dict_one = {'name': "tom", 'age': 20}
simple_dict_two = {'name': "lisa", 'age': 17}
simple_dict_one.update(simple_dict_two)
字典合并后,将保留以下字典:
{'age': 17, 'name': 'lisa'}
因此,如果您在两个字典中都具有相同的键,则仅剩下一个(显然最后一个)。如果我有多个来源的大量名称,那么我可能希望每个来源都有一个临时辞典,然后将其添加到更大的辞典中。
有没有办法合并两个字典并仍然保留所有键?我猜你只是想拥有一个唯一的键,但是我如何在不丢失数据的情况下合并两个字典呢?
好吧,我有几个来源,例如,我从ldap数据库中收集信息,还有其他来源,其中有python函数,每个函数都创建一个临时字典,但我想在末尾得到一个完整的字典,以连接或显示从所有数据库收集的所有信息。来源..所以我将拥有所有信息的一个字典
您试图对“合并”进行的操作不是很理想。如你所说
我想您只是想拥有一个唯一的钥匙
这使得相对困难地在一个字典中收集所有信息。
您可以做的.update()
是添加一个子字典,而不是调用现有字典。它的密钥可以是您从中收集信息的来源的名称。该值可以是您从源接收到的字典,如果您需要存储同一源的超过1个字典,则可以将它们存储在列表中。
例子
>>> data = {}
>>> person_1 = {'name': 'lisa', 'age': 17}
>>> person_2 = {'name': 'tom', 'age': 20}
>>> data['people'] = [person_1, person_2]
>>> data
{'people': [{'age': 17, 'name': 'lisa'}, {'age': 20, 'name': 'tom'}]}
然后,每当需要添加新收集的信息时,只需在data
字典中添加一个新条目即可。
>>> ldap_data = {'foo': 1, 'bar': 'baz'} # just some dummy data
>>> data['ldap_data'] = ldap_data
>>> data
{'people': [{'age': 17, 'name': 'lisa'}, {'age': 20, 'name': 'tom'}],
'ldap_data': {'foo': 1, 'bar': 'baz'}}
可以从data
dict中轻松提取特定于源的数据
>>> data['people']
[{'age': 17, 'name': 'lisa'}, {'age': 20, 'name': 'tom'}]
>>> data['ldap_data']
{'foo': 1, 'bar': 'baz'}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句