python - 从字典列表中删除重复的字典

标签 python list dictionary

我想从字典列表中找到重复的目录并删除其中一个,但它会生成错误。姓名、年龄、组只有所有 3 个值应该相同才能将其作为重复字典。不附加到新的字典列表

a = [
  {"name": "Tom", "age": 21,"group":"sdd","points":0},
  {"name": "Mark", "age": 5,"group":"sdo","points":0},
  {"name": "Pam", "age": 7,"group":"spp","points":0},
  {"name": "Tom", "age": 21,"group":"sdd","points":0},
  {"name": "Buke", "age": 31,"group":"pool","points":0}
]

print(a)
for i in range(len(a)):
  for j in range(i+1,len(a)):
    if a[i] == a[j]:
      a.pop[j]
      

print(a)

最佳答案

如果我没理解错的话,只有当姓名、年龄和组匹配时才会出现重复:

a = [
    {"name": "Tom", "age": 21, "group": "sdd", "points": 0},
    {"name": "Mark", "age": 5, "group": "sdo", "points": 0},
    {"name": "Pam", "age": 7, "group": "spp", "points": 0},
    {"name": "Tom", "age": 21, "group": "sdd", "points": 0},
    {"name": "Buke", "age": 31, "group": "pool", "points": 0},
]

out, seen = [], set()
for d in a:
    tpl = d["name"], d["age"], d["group"]
    if tpl not in seen:
        seen.add(tpl)
        out.append(d)

print(out)

打印:

[
    {"name": "Tom", "age": 21, "group": "sdd", "points": 0},
    {"name": "Mark", "age": 5, "group": "sdo", "points": 0},
    {"name": "Pam", "age": 7, "group": "spp", "points": 0},
    {"name": "Buke", "age": 31, "group": "pool", "points": 0},
]

关于python - 从字典列表中删除重复的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74584726/

相关文章:

python - 简化这个 Django 查询

python - 验证字符串是否为有效的 C 代码

python - 查找和替换列表中的元素

c# - 使用 linq 填充字典

python - 为什么我无法在此嵌套字典中创建其他键?

Python程序和日期时间本地化

python - 如何通过 Pandas 的出生日期获取年龄列?

python - 将字符串转换为列表的正则表达式(Python)

c# - 使用另一个列表的内容过滤一个列表

python - 如何在python中使用多维字典