gpt4 book ai didi

python - 根据字典的值将字典转换为字典列表

转载 作者:行者123 更新时间:2023-11-28 20:52:31 25 4
gpt4 key购买 nike

我有不同的词典,我想将它们重新组合到一个词典列表中,同时考虑到它们的不同值:

字典:

[{'language': 'de', 'suggestion': 'fressen', 'comment': 'for animals'},
{'language': 'de', 'suggestion': 'essen', 'comment': ''},
{'language': 'fr', 'suggestion': 'manger', 'comment': ''},
{'language': 'fr', 'suggestion': 'bouffer', 'comment': 'slang'}]

词典列表:

[{'language': 'de', 'suggestion': ['fressen', 'essen'], 'comment': ['for animals', '']}, \
{'language': 'fr', 'suggestion': ['manger', 'bouffer'], 'comment': ['', 'slang'}]

我还是一个python初学者,我不知道从哪里开始,把所有具有相同'language': 'de'的字典归为同一个dict。

最佳答案

一个简单的解决方案,假设所有字典的键都相同:

ld = [{'language': 'de', 'suggestion': 'fressen', 'comment': 'for animals'},
{'language': 'de', 'suggestion': 'essen', 'comment': ''},
{'language': 'fr', 'suggestion': 'manger', 'comment': ''},
{'language': 'fr', 'suggestion': 'bouffer', 'comment': 'slang'}]

langs = {i['language'] for i in ld}

d = []

for lang in langs:
d.append({"language": lang})
for key in ld[0].keys() - ["language"]:
d[-1][key] = [i[key] for i in ld if i["language"] == lang]

print(d)

输出:

[{'comment': ['', 'slang'],
'language': 'fr',
'suggestion': ['manger', 'bouffer']},
{'comment': ['for animals', ''],
'language': 'de',
'suggestion': ['fressen', 'essen']}]

如果您选择使用@FMc 在他对您的问题的评论中描述的数据结构,您可以使用那条长长的单行代码,使用嵌套理解来完成所有事情:

d = {lang: 
{i["suggestion"]: i["comment"]
for i in ld if i["language"] == lang}
for lang in {i["language"] for i in ld}}

print(d)

输出:

{'de': {'essen': '', 'fressen': 'for animals'},
'fr': {'bouffer': 'slang', 'manger': ''}}

关于python - 根据字典的值将字典转换为字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com