dict.update覆盖现有密钥,如何避免?

用户名

在将两个字典合并在一起的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'}}

可以从datadict中轻松提取特定于源的数据

>>> data['people']
[{'age': 17, 'name': 'lisa'}, {'age': 20, 'name': 'tom'}]

>>> data['ldap_data']
{'foo': 1, 'bar': 'baz'}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

dict.update覆盖现有密钥,如何避免?

来自分类Dev

如何在不覆盖的情况下将新值附加到现有的dict键

来自分类Dev

没有nans的转置dict的dict

来自分类Dev

Python 如何将现有的本机 dict 转换为自定义 dict 对象?

来自分类Dev

如何从选定的密钥再次遍历python dict?

来自分类Dev

如何引用dict对象?

来自分类Dev

如何从html获取dict?

来自分类Dev

覆盖子类中的dict.update()方法以防止覆盖dict键

来自分类Dev

从最小密钥到最大密钥遍历dict

来自分类Dev

带有dict的Python递归

来自分类Dev

如何提高python dict的性能?

来自分类Dev

如何在Tcl中使用dict追加嵌套dict

来自分类Dev

用dict输入“替换”的熊猫根据dict的顺序返回不同的结果(其中dict没有顺序)

来自分类Dev

bsdtar:如何避免覆盖现有文件信息?

来自分类Dev

如何使dict(a_instance_of_a_subclass_of_dict)在Python 2.7中成为常规dict?

来自分类Dev

如何从从dict继承的类中自动更新密钥?

来自分类Dev

向defaultdict(dict)添加密钥

来自分类Dev

从Json Dict / Python中删除密钥

来自分类Dev

默认dict键以避免KeyError

来自分类Dev

覆盖NDB属性的默认_get_for_dict()

来自分类Dev

Python 2.7 Dict 正在覆盖自身

来自分类Dev

Python dict 更新是覆盖而不是附加

来自分类Dev

如果存在匹配项,Python将dict的值附加到具有两个值的现有dict上

来自分类Dev

将密钥对值插入嵌套的dict中,而不会在产生重复密钥的密钥定界符之后覆盖

来自分类Dev

Python dict.update()与C ++ std :: map?

来自分类Dev

如何在不覆盖现有密钥的情况下向Dynamodb映射添加新密钥?

来自分类Dev

带有dict.update()的Pandas groupby函数

来自分类Dev

dict.update() 没有按预期工作

来自分类Dev

当值是另一个dict时从dict获取密钥

Related 相关文章

  1. 1

    dict.update覆盖现有密钥,如何避免?

  2. 2

    如何在不覆盖的情况下将新值附加到现有的dict键

  3. 3

    没有nans的转置dict的dict

  4. 4

    Python 如何将现有的本机 dict 转换为自定义 dict 对象?

  5. 5

    如何从选定的密钥再次遍历python dict?

  6. 6

    如何引用dict对象?

  7. 7

    如何从html获取dict?

  8. 8

    覆盖子类中的dict.update()方法以防止覆盖dict键

  9. 9

    从最小密钥到最大密钥遍历dict

  10. 10

    带有dict的Python递归

  11. 11

    如何提高python dict的性能?

  12. 12

    如何在Tcl中使用dict追加嵌套dict

  13. 13

    用dict输入“替换”的熊猫根据dict的顺序返回不同的结果(其中dict没有顺序)

  14. 14

    bsdtar:如何避免覆盖现有文件信息?

  15. 15

    如何使dict(a_instance_of_a_subclass_of_dict)在Python 2.7中成为常规dict?

  16. 16

    如何从从dict继承的类中自动更新密钥?

  17. 17

    向defaultdict(dict)添加密钥

  18. 18

    从Json Dict / Python中删除密钥

  19. 19

    默认dict键以避免KeyError

  20. 20

    覆盖NDB属性的默认_get_for_dict()

  21. 21

    Python 2.7 Dict 正在覆盖自身

  22. 22

    Python dict 更新是覆盖而不是附加

  23. 23

    如果存在匹配项,Python将dict的值附加到具有两个值的现有dict上

  24. 24

    将密钥对值插入嵌套的dict中,而不会在产生重复密钥的密钥定界符之后覆盖

  25. 25

    Python dict.update()与C ++ std :: map?

  26. 26

    如何在不覆盖现有密钥的情况下向Dynamodb映射添加新密钥?

  27. 27

    带有dict.update()的Pandas groupby函数

  28. 28

    dict.update() 没有按预期工作

  29. 29

    当值是另一个dict时从dict获取密钥

热门标签

归档