如何从列表中删除重复项和无值

问题描述 投票:0回答:1

您好,我有大量字典列表,想用 None 删除重复的字典和值。 在数据结构中,一堆字典是重复的。我想保留一对设备。

批量数据

[
    {"name": "PAIR-05|PAIR-06", "device": "oob-01"},
    {"name": "PAIR-05|PAIR-06", "device": "oob-01"},
    {"name": "PAIR-01|PAIR-02", "device": "oob-03"},
    {"name": "PAIR-01|PAIR-02", "device": "oob-03"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
]

非工作代码:

for key, value in bulkpairdata.items():
  t = []
  if bulkpairdata.get("name") != None:
    if bulkpairdata.get("name") not in t:
      result.append(bulkpairdata)
      t.append(bulkpairdata.get("name"))
    else:
      bulkpairdata.remove(bulkpairdata.get("name"))

结果:

[
    {"name": "PAIR-05|PAIR-06", "device": "oob-01"},
    {"name": "PAIR-01|PAIR-02", "device": "oob-03"},
]
python list dictionary
1个回答
0
投票

试试这个:

bulkdata = [
    {"name": "PAIR-05|PAIR-06", "device": "oob-01"},
    {"name": "PAIR-05|PAIR-06", "device": "oob-01"},
    {"name": "PAIR-01|PAIR-02", "device": "oob-03"},
    {"name": "PAIR-01|PAIR-02", "device": "oob-03"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
    {"name": None, "device": "oob-01"},
]


[dict(t) for t in {tuple(d.items()) for d in list(filter(lambda x: None not in x.values(), bulkdata))}]

打印:

[{'name': 'PAIR-05|PAIR-06', 'device': 'oob-01'},
 {'name': 'PAIR-01|PAIR-02', 'device': 'oob-03'}]

供参考: 如何删除重复的字典:https://stackoverflow.com/a/9427216/5240684

过滤器功能如何工作:https://www.programiz.com/python-programming/methods/built-in/filter

© www.soinside.com 2019 - 2024. All rights reserved.