【问题标题】:How to remove duplicate dict from list in Python如何从 Python 列表中删除重复的字典
【发布时间】:2023-01-08 07:29:02
【问题描述】:

我有字典列表,有时会有重复的字典。例如:

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']。所以这样我们就知道哪个字典是重复的。我们现在必须删除它的任何一个出现。我们如何从列表中删除该事件?

【问题讨论】:

  • @MechanicPig 你能在答案中解释一下吗?

标签: python list dictionary


【解决方案1】:

正如@mugiseyebrows所说,我们使用每个字典的'Name'(这个说法不是很严谨。)作为键,字典本身作为值来创建一个新的字典,这样就可以保证一个字典具有相同的@ 987654322@出现一次,然后使用它的values创建一个新列表:

>>> new_dict = {dct['Name']: dct for dct in objList}
>>> new_list = list(new_dict.values())
>>> print('},
'.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'}]

【讨论】:

    【解决方案2】:

    除了字典列表,您还可以使用名称作为键的字典字典。这样,如果您插入具有相同名称的新对象,它将替换以前的对象。

    如果您需要保留顺序,可以使用OrderedDict

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2011-10-28
      • 1970-01-01
      • 2019-01-09
      • 2022-11-27
      • 2014-01-28
      • 2016-03-14
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多