您好,我有大量字典列表,想用 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"},
]
试试这个:
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