gpt4 book ai didi

python - 根据重复值将字典列表合并为较小的字典列表

转载 作者:行者123 更新时间:2023-12-02 04:40:14 27 4
gpt4 key购买 nike

我有一个关于字典列表的问题。让我演示一下我的问题。以下是字典示例列表:

[{'a' : '1'}, {'b' : 'something'}, {'c' : 'else'},
{'a' : '2'}, {'b' : 'anything'}, {'c' : 'if'},
{'a' : '3'}, {'b' : 'nothing'}, {'c' : 'matters'}]

正如你所看到的,我有分开的字典,但是我想合并它们。条件是当字典名称再次出现时,那应该是一个单独的字典。像这样的事情:

list_of_dict = 
[{'a' : '1', 'b' : 'something', 'c' : 'else'},
{'a' : '2', 'b' : 'anything', 'c' : 'if'},
{'a' : '3', 'b' : 'nothing', 'c' : 'matters'}]

我一直在尝试使用dict(ChainMap(*list_of_dict),但是这只返回:

{'c': 'else', 'b': 'something', 'a': '1'}

我正在考虑也许使用 for 循环来解决我的问题,但我不知道如何开始。你们有什么想法吗?

最佳答案

这可以通过 for 循环来完成,迭代 list_of_dict 并检查字典中的键是否位于返回列表中的最新字典中。如果没有,则使用 ** 运算符将其附加到最新的字典中以合并字典,否则在返回列表中启动一个新字典。

代码:

list_of_dict = [{'a' : '1'}, {'b' : 'something'}, {'c' : 'else'},
{'a' : '2'}, {'b' : 'anything'}, {'c' : 'if'},
{'a' : '3'}, {'b' : 'nothing'}, {'c' : 'matters'}]

rv = [{}]

for d in list_of_dict:
if list(d)[0] not in rv[-1]:
rv[-1] = {**rv[-1], **d}
else:
rv.append(d)

输出:

>>> rv
[{'a': '1', 'b': 'something', 'c': 'else'},
{'a': '2', 'b': 'anything', 'c': 'if'},
{'a': '3', 'b': 'nothing', 'c': 'matters'}]

关于python - 根据重复值将字典列表合并为较小的字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60225903/

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