在字典列表中合并不同的键

2024-06-26 01:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我提前道歉,如果这是一个重复的问题,我很努力地找到它在堆栈溢出,但我没有成功。 我有一个像下面那样的字典清单。你知道吗

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)

我想当有两个单独的词典列表要合并时,这种方法会更好。如何在列表中合并不同的键?我真的很感谢你在这方面的帮助!你知道吗


Tags: inmovielightd2d1cherrysawman
2条回答

1.如果你的d1是一个list就可以了。但是如果您的d1dict,则dict不能有重复的密钥。它是dict的基本比例。所以你的d1是非法的,只有一个evicted/saw

2假设d1是一个列表,代码为:

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

问题是字典不能有重复的键。如果在声明后添加一个print d1,您将看到重复的键消失了。您需要为d1使用单独的字典或其他数据结构。你知道吗

相关问题 更多 >