合并字典列表中的不同键

时间:2013-11-16 14:28:04

标签: python python-3.x dictionary merge

如果这是一个重复的问题我提前道歉,我在Stack Overflow中非常努力地找到它,但我没有成功。 我有一个字典列表,如下一个字典。

d1 = {'saw': ['movie', '14', 'bird', '8', 'light', '5', 'plane', '4', 'man', '4'], 
'saw': ['zit', '10', 'popcorn', '6', 'pimple', '6', 'cherry', '5', 'pill', '4'],
'evicted': ['tenant', '66', 'family', '5', 'renter', '5', 'neighbor', '4'], 
'evicted': ['dog', '9', 'teacher', '9', 'neighbor', '7', 'man', '6', 'girl', '6']}

我想基于他们的密钥合并不同的项目。所以他们看起来像:

d2 = {'saw': ['movie', '14', 'bird', '8', 'light', '5', 
'plane', '4', 'man', '4', 'zit', '10', 'popcorn', '6', 'pimple', '6', 
'cherry', '5', 'pill', '4'],
'evicted': ['tenant', '66', 'family', '5', 'renter', '5', 'neighbor', '4', 
'dog', '9', 'teacher', '9', 'neighbor', '7', 'man', '6', 'girl', '6']}

我正在使用此代码,但它没有所需的输出:

d2 = {}
for d in d1:
    for k, v in d1 ():
        if k not in d2: d2 [k] = []
        d2 [k].append (v)
print(d2)

我想当有两个单独的词典列表要合并时,这会更好。如何合并列表中的不同键?我真的很感激你的任何帮助!

2 个答案:

答案 0 :(得分:1)

1.如果d1list,则可以。但是,如果您的d1dict,则dict不能拥有重复的密钥。它是dict的基本比例。因此,d1是非法的,只会有一个evicted / saw

2假设d1是代码所在的列表:

for dicts in d1:
   for key, value in dicts.items():
      new_dict.setdefault(key,[]).extend(value)

答案 1 :(得分:0)

问题是字典不能有重复的键。如果在声明后添加print d1,您将看到重复的密钥已消失。您需要使用单独的词典或d1的其他数据结构。