字典列表比较第一个dict的第一个值和下一个dict的第一个值

2024-05-15 20:29:45 发布

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

我有一个字典列表,例如:

l = [{"a":1, "b":2, "c":3}, {"a":1, "b":2, "c":4}, {"a":1, "b":7, "c":4}, {"a":2, "b":7, "c":4}] 

如果“a”的值相等,我需要创建一个嵌套字典。 我试过:

l2 = [l[i] for i in range(len(l)-1) if l[i].get('a') == l[i+1].get('a')]
d = {"element"+ str(index): x for index, x in enumerate(l2, start=1)}

但在输出中,我发现它跳过了一个元素:

{'element1': {'a': 1, 'b': 2, 'c': 3}, 'element2': {'a': 1, 'b': 2, 'c': 4}}

预期产出:

{'element1': {'a': 1, 'b': 2, 'c': 3}, 'element2': {'a': 1, 'b': 2, 'c': 4}, 'element3': {"a":1, "b":7, "c":4}}

谁能帮帮我,我做错了什么


Tags: in列表forgetindexlenif字典
1条回答
网友
1楼 · 发布于 2024-05-15 20:29:45

试试这个:

out = {f'element{i + 1}': j for i, j in enumerate(l) if any(j['a'] == k['a'] for k in l[:i] + l[i+1:])}

输出:

{'element1': {'a': 1, 'b': 2, 'c': 3}, 'element2': {'a': 1, 'b': 2, 'c': 4}, 'element3': {'a': 1, 'b': 7, 'c': 4}}

相关问题 更多 >