我只发现人们想要删除重复项但不依赖于包含键值的标准的问题。
假设我有一个包含字典的列表
myList = [
{'version': 'v1', 'updated': '2020-06-17 22:15:00+00:00'},
{'version': 'v1', 'updated': '2020-08-24 17:37:00+00:00'},
{'version': 'v5', 'updated': '2019-08-30 11:42:00+00:00'},
{'version': 'v1', 'updated': '2020-03-11 22:28:00+00:00'},
{'version': 'v7', 'updated': '2020-06-17 22:15:00+00:00'}
]
现在我想删除键具有相同值的重复字典,例如,version
具有值 v1
并且只保留最新的但我不知道该值是 v1
所以我必须在不知道值的情况下检查 version
中的重复项。找到重复项后,我想比较 update
中的日期并选择最新的日期并根据此条件删除重复项。我不能保证最新的是最后一个条目,就像在 myList
中可以看到的,v1
的第二个条目是最新的,而不是第三个。
结果
myCleanedList= [
{'version': 'v1', 'updated': '2020-08-24 17:37:00+00:00'},
{'version': 'v5', 'updated': '2019-08-30 11:42:00+00:00'},
{'version': 'v7', 'updated': '2020-06-17 22:15:00+00:00'}
]
答案 0 :(得分:3)
试试:
myList = [
{"version": "v1", "updated": "2020-06-17 22:15:00+00:00"},
{"version": "v1", "updated": "2020-08-24 17:37:00+00:00"},
{"version": "v5", "updated": "2019-08-30 11:42:00+00:00"},
{"version": "v1", "updated": "2020-03-11 22:28:00+00:00"},
{"version": "v7", "updated": "2020-06-17 22:15:00+00:00"},
]
out = {}
for d in myList:
out.setdefault(d["version"], []).append(d)
out = [
sorted(v, key=lambda k: k["updated"], reverse=True)[0] for v in out.values()
]
print(out)
打印:
[{'version': 'v1', 'updated': '2020-08-24 17:37:00+00:00'},
{'version': 'v5', 'updated': '2019-08-30 11:42:00+00:00'},
{'version': 'v7', 'updated': '2020-06-17 22:15:00+00:00'}]
答案 1 :(得分:0)
始终按任何输入顺序对“版本”进行排序的代码:
(输入顺序改为'version' 1-7-5而不是原来的1-5-7)
myList = [
{'version': 'v1', 'updated': '2020-06-17 22:15:00+00:00'},
{'version': 'v7', 'updated': '2020-06-17 22:15:00+00:00'},
{'version': 'v1', 'updated': '2020-08-24 17:37:00+00:00'},
{'version': 'v5', 'updated': '2019-08-30 11:42:00+00:00'},
{'version': 'v1', 'updated': '2020-03-11 22:28:00+00:00'}
]
out = {d["version"]: d for d in sorted(myList, key=lambda k: k["updated"])}
print(*sorted(out.values(), key=lambda k: k["version"]), sep='\n')
输出:
{'version': 'v1', 'updated': '2020-08-24 17:37:00+00:00'}
{'version': 'v5', 'updated': '2019-08-30 11:42:00+00:00'}
{'version': 'v7', 'updated': '2020-06-17 22:15:00+00:00'}