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

Python 字典列表比较第一个dict的第一个值和下一个dict的第一个值,python,dictionary,Python,Dictionary,我有一个字典列表,例如: 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”的值相等,我需要创建一个嵌

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

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}}
有人能帮帮我吗,我做错了什么?

试试这个:

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}}

请添加预期输出请先显示预期输出,然后显示尝试。您是否知道预期输出有语法错误?不理解的代码是什么?这将更容易理解和再现您的问题“如果“a”的值相等,则创建嵌套字典”-这仍然是含糊不清的描述,请更精确。如果有更多的“a”值重复等怎么办?谢谢,但如果a的值相同,则只需要一个元素,在本例中为3。带有“a”的第四个元素:4应该被过滤掉。返回一个错误字符串索引必须是整数不可调整…@Volume069 fixedMANY非常感谢!很好用@如果你能投票赞成我的答案,我将不胜感激