gpt4 book ai didi

python - 从字典 python 列表中删除重复键

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:05 25 4
gpt4 key购买 nike

我正在尝试从以下列表中删除重复项:

distinct_cur = [
{'rtc': 0, 'vf': 0, 'mtc': 0, 'doc': 'good job', 'foc': 195, 'st': 0.0, 'htc': 2, '_id': ObjectId('58e86a550a0aeff4e14ca6bb'), 'ftc': 0},
{'rtc': 0, 'vf': 0, 'mtc': 0, 'doc': 'good job', 'foc': 454, 'st': 0.8, 'htc': 1, '_id': ObjectId('58e8d03958ae6d179c2b4413'), 'ftc': 1},
{'rtc': 0, 'vf': 2, 'mtc': 1, 'doc': 'test', 'foc': 45, 'st': 0.8, 'htc': 12, '_id': ObjectId('58e8d03958ae6d180c2b4446'), 'ftc': 0}
]

基于条件的字典,如果“doc”键值文本相同,则应删除其中一个字典。我尝试了以下解决方案:

distinct_cur = [dict(y) for y in set(tuple(x.items()) for x in cur)]

但重复项仍然存在于最终列表中。

下面是所需的输出,因为键“doc”值的第一个和第二个 distinct_cur 文本相同(干得好):

[
{'rtc': 0, 'vf': 0, 'mtc': 0, 'doc': 'good job', 'foc': 195, 'st': 0.0, 'htc': 2, '_id': ObjectId('58e86a550a0aeff4e14ca6bb'), 'ftc': 0},
{'rtc': 0, 'vf': 2, 'mtc': 1, 'doc': 'test', 'foc': 45, 'st': 0.8, 'htc': 12, '_id': ObjectId('58e8d03958ae6d180c2b4446'), 'ftc': 0}
]

最佳答案

您正在用不同的元素创建一个,并期望它会根据只有您知道的标准删除重复项。

您必须遍历您的列表,并且仅当 doc 的值与之前的值不同时才添加到结果列表:例如像这样:

done = set()
result = []
for d in distinct_cur:
if d['doc'] not in done:
done.add(d['doc']) # note it down for further iterations
result.append(d)

这将通过在 aux 集中注册已知键来仅保留具有相同 doc 键的字典的第一次出现。

另一种可能性是使用字典,键为字典的 "doc" 键,在列表中向后迭代,以便第一个项目覆盖列表中的最后一个:

result = {i['doc']:i for i in reversed(distinct_cur)}.values()

关于python - 从字典 python 列表中删除重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43319409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com