gpt4 book ai didi

python - 字典列表删除半出现

转载 作者:行者123 更新时间:2023-12-02 18:30:38 25 4
gpt4 key购买 nike

我有一个字典列表:

[{'name':'A', 'flag':'2','id':'x1'},
{'name':'A', 'flag':'2','id':'x2'},
{'name':'A','flag':'1','id':'x3'},
{'name':'B', 'flag':'2','id':'x4'}]

我想要一个像这样的输出:

[{'name':'A', 'flag':'2','id':'x1'},
{'name':'A', 'flag':'1','id':'x3'},
{'name':'B', 'flag':'2','id':'x4'}]

从列表中删除重复的字典,其中:字段名称标志相同。
例如,第二个字典将被删除,因为它与第一个字典具有相同名称、相同标志的半重复(不同的 id,但我们不关心 id:我们的想法是删除具有相同名称 和相同的标志并只保留其中一个
我可以使用嵌套循环,但不知道是否可以使用列表理解!?

最佳答案

一种方法:

# create dictionary using as keys the values to remove duplicates 
lookup = {(d["name"], d["flag"]): d for d in data[::-1]}

# create list from the lookup values
res = [e for e in lookup.values()]

print(res)

输出

[{'name': 'B', 'flag': '2', 'id': 'x4'}, {'name': 'A', 'flag': '1', 'id': 'x3'}, {'name': 'A', 'flag': '2', 'id': 'x1'}]

如果顺序很重要,只需颠倒列表即可:

print(res[::-1])

输出

[{'name': 'A', 'flag': '2', 'id': 'x1'}, {'name': 'A', 'flag': '1', 'id': 'x3'}, {'name': 'B', 'flag': '2', 'id': 'x4'}]

使用字典按键删除重复项是一个已知的 Python 技巧。

关于python - 字典列表删除半出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69467672/

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