如何从 python 中的列表中删除重复的字典
How to remove duplicate dict from list in python
我有一个字典列表,其中有时会有重复的字典。例如:
objList =
[{
'Name': 'plate',
'StartTime': '2022-05-17T10:26:05.738101',
}, {
'Name': 'bezel',
'StartTime': '2022-05-17T10:26:09.922667',
}, {
'Name': 'chrome',
'StartTime': '2022-05-17T10:26:23.283304',
}, {
'Name': 'plate placement',
'StartTime': '2022-05-17T10:26:25.570845',
}, {
'Name': 'plate placement',
'StartTime': '2022-05-17T10:26:39.3390',
}]
在上面的数据中,plate placement
是重复的。同样,任何字典都可以复制,但我删除了任何重复数据并只保留一个。为此,首先我想到检查列表中是否有重复的字典:
obj_names = []
for obj in objList:
obj_names.append(obj['Name'])
现在 obj_names
包含 ['plate', 'bezel', 'chrome', 'plate placement', 'plate placement']
。所以这样我们就知道哪个字典是重复的。我们现在必须删除它的任何一个出现。但我不确定我们如何才能从列表中删除该事件。任何人都可以提出建议吗?谢谢
您可以使用名称作为键的字典字典来代替字典列表。这样,如果您插入具有相同名称的新对象,它将替换以前的对象。
如果您需要保留顺序,您可以使用 OrderedDict。
正如@mugiseyebrows所说,我们使用每个字典的'Name'
(这个说法不是很严谨。)作为键,字典本身作为值来创建一个新的字典,这样你就可以确保具有相同 'Name'
的字典出现一次,然后使用其 values
创建一个新列表:
>>> new_dict = {dct['Name']: dct for dct in objList}
>>> new_list = list(new_dict.values())
>>> print('},\n'.join(str(new_list).split('},')))
[{'Name': 'plate', 'StartTime': '2022-05-17T10:26:05.738101'},
{'Name': 'bezel', 'StartTime': '2022-05-17T10:26:09.922667'},
{'Name': 'chrome', 'StartTime': '2022-05-17T10:26:23.283304'},
{'Name': 'plate placement', 'StartTime': '2022-05-17T10:26:39.3390'}]
我有一个字典列表,其中有时会有重复的字典。例如:
objList =
[{
'Name': 'plate',
'StartTime': '2022-05-17T10:26:05.738101',
}, {
'Name': 'bezel',
'StartTime': '2022-05-17T10:26:09.922667',
}, {
'Name': 'chrome',
'StartTime': '2022-05-17T10:26:23.283304',
}, {
'Name': 'plate placement',
'StartTime': '2022-05-17T10:26:25.570845',
}, {
'Name': 'plate placement',
'StartTime': '2022-05-17T10:26:39.3390',
}]
在上面的数据中,plate placement
是重复的。同样,任何字典都可以复制,但我删除了任何重复数据并只保留一个。为此,首先我想到检查列表中是否有重复的字典:
obj_names = []
for obj in objList:
obj_names.append(obj['Name'])
现在 obj_names
包含 ['plate', 'bezel', 'chrome', 'plate placement', 'plate placement']
。所以这样我们就知道哪个字典是重复的。我们现在必须删除它的任何一个出现。但我不确定我们如何才能从列表中删除该事件。任何人都可以提出建议吗?谢谢
您可以使用名称作为键的字典字典来代替字典列表。这样,如果您插入具有相同名称的新对象,它将替换以前的对象。
如果您需要保留顺序,您可以使用 OrderedDict。
正如@mugiseyebrows所说,我们使用每个字典的'Name'
(这个说法不是很严谨。)作为键,字典本身作为值来创建一个新的字典,这样你就可以确保具有相同 'Name'
的字典出现一次,然后使用其 values
创建一个新列表:
>>> new_dict = {dct['Name']: dct for dct in objList}
>>> new_list = list(new_dict.values())
>>> print('},\n'.join(str(new_list).split('},')))
[{'Name': 'plate', 'StartTime': '2022-05-17T10:26:05.738101'},
{'Name': 'bezel', 'StartTime': '2022-05-17T10:26:09.922667'},
{'Name': 'chrome', 'StartTime': '2022-05-17T10:26:23.283304'},
{'Name': 'plate placement', 'StartTime': '2022-05-17T10:26:39.3390'}]