如何合并两个具有相同键名的字典

娜西亚·贾弗里

我是Python的新手,正在尝试编写将在Python中合并两个字典对象的函数。例如

dict1 = {'a':[1], 'b':[2]}
dict2 = {'b':[3], 'c':[4]}

我需要制作一个新的合并字典

dict3 = {'a':[1], 'b':[2,3], 'c':[4]}

函数还应带有一个参数“ conflict”(设置为True或False)。如果将冲突设置为False,则可以使用上述方法。当将冲突设置为True时,代码将像这样合并字典:

dict3 = {'a':[1], 'b_1':[2], 'b_2':[3], 'c':[4]}

我正在尝试附加这2个字典,但不确定如何正确执行。

for key in dict1.keys():
    if dict2.has_key(key):
        dict2[key].append(dict1[key])
夜空中塔

如果您希望合并的副本不更改原始字典并监视名称冲突,则可能需要尝试以下解决方案:

#! /usr/bin/env python3
import copy
import itertools


def main():
    dict_a = dict(a=[1], b=[2])
    dict_b = dict(b=[3], c=[4])
    complete_merge = merge_dicts(dict_a, dict_b, True)
    print(complete_merge)
    resolved_merge = merge_dicts(dict_a, dict_b, False)
    print(resolved_merge)


def merge_dicts(a, b, complete):
    new_dict = copy.deepcopy(a)
    if complete:
        for key, value in b.items():
            new_dict.setdefault(key, []).extend(value)
    else:
        for key, value in b.items():
            if key in new_dict:
                # rename first key
                counter = itertools.count(1)
                while True:
                    new_key = f'{key}_{next(counter)}'
                    if new_key not in new_dict:
                        new_dict[new_key] = new_dict.pop(key)
                        break
                # create second key
                while True:
                    new_key = f'{key}_{next(counter)}'
                    if new_key not in new_dict:
                        new_dict[new_key] = value
                        break
            else:
                new_dict[key] = value
    return new_dict


if __name__ == '__main__':
    main()

程序为两个合并的字典显示以下表示形式:

{'a': [1], 'b': [2, 3], 'c': [4]}
{'a': [1], 'b_1': [2], 'b_2': [3], 'c': [4]}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

合并两个具有相同键值的字典

来自分类Dev

如何合并两个具有多个键值对的字典

来自分类Dev

如何合并两个具有字典的列表

来自分类Dev

如何合并两个具有相同值的对象?

来自分类Dev

如何联接具有相同主键名称但值不同的两个表

来自分类Dev

合并两个在字典中具有相同项目的列表

来自分类Dev

如果不对字典进行排序,为什么两个具有相同键名的字典按相同顺序返回值?

来自分类Dev

如果两个字典具有相同的键值对,如何将它们合并?

来自分类Dev

如何合并具有相同元素的两个字典(键:val)

来自分类Dev

具有相同密钥的两个不同字典的总和

来自分类Dev

Concat两个具有相同关键记录的字典

来自分类Dev

合并两个具有相同列名的数据框

来自分类Dev

R:合并两个具有相同列名的列表

来自分类Dev

合并具有相同渐变背景的两个div

来自分类Dev

加载两个具有相同父键名称的json文件

来自分类Dev

React 基于另外两个具有相同键名的新数组

来自分类Dev

Ansible-如何比较两个具有相同键的字典

来自分类Dev

如何将两个列表中具有相同键的字典值相加?

来自分类Dev

如何在Ruby中合并具有相同密钥的两个哈希

来自分类Dev

如何在Pentaho中合并具有相同列的两个流?

来自分类Dev

如何合并具有不同哈希值的两个相同提交?

来自分类Dev

如何合并Excel中具有相同列的两个表?

来自分类Dev

如何合并具有相同结构的两个mysql表

来自分类Dev

Rails:如果特定键具有相同的值,如何合并两个哈希?

来自分类Dev

如何匹配和合并具有相同键的两个对象数组

来自分类Dev

SQL合并两个表,其中两个列具有相同的值

来自分类Dev

在Python中合并具有相同键的列表的两个字典

来自分类Dev

如何将具有相同架构的两个表合并为一个,使用 phpmyadmin

来自分类Dev

如何合并具有不同列的两个表

Related 相关文章

  1. 1

    合并两个具有相同键值的字典

  2. 2

    如何合并两个具有多个键值对的字典

  3. 3

    如何合并两个具有字典的列表

  4. 4

    如何合并两个具有相同值的对象?

  5. 5

    如何联接具有相同主键名称但值不同的两个表

  6. 6

    合并两个在字典中具有相同项目的列表

  7. 7

    如果不对字典进行排序,为什么两个具有相同键名的字典按相同顺序返回值?

  8. 8

    如果两个字典具有相同的键值对,如何将它们合并?

  9. 9

    如何合并具有相同元素的两个字典(键:val)

  10. 10

    具有相同密钥的两个不同字典的总和

  11. 11

    Concat两个具有相同关键记录的字典

  12. 12

    合并两个具有相同列名的数据框

  13. 13

    R:合并两个具有相同列名的列表

  14. 14

    合并具有相同渐变背景的两个div

  15. 15

    加载两个具有相同父键名称的json文件

  16. 16

    React 基于另外两个具有相同键名的新数组

  17. 17

    Ansible-如何比较两个具有相同键的字典

  18. 18

    如何将两个列表中具有相同键的字典值相加?

  19. 19

    如何在Ruby中合并具有相同密钥的两个哈希

  20. 20

    如何在Pentaho中合并具有相同列的两个流?

  21. 21

    如何合并具有不同哈希值的两个相同提交?

  22. 22

    如何合并Excel中具有相同列的两个表?

  23. 23

    如何合并具有相同结构的两个mysql表

  24. 24

    Rails:如果特定键具有相同的值,如何合并两个哈希?

  25. 25

    如何匹配和合并具有相同键的两个对象数组

  26. 26

    SQL合并两个表,其中两个列具有相同的值

  27. 27

    在Python中合并具有相同键的列表的两个字典

  28. 28

    如何将具有相同架构的两个表合并为一个,使用 phpmyadmin

  29. 29

    如何合并具有不同列的两个表

热门标签

归档