程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从python中的字典列表中删除重复项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从python中的字典列表中删除重复项?

开发过程中遇到如何从python中的字典列表中删除重复项的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从python中的字典列表中删除重复项的解决方法建议,希望对你解决如何从python中的字典列表中删除重复项有所启发或帮助;

我有 2 个具有相值的字典列表。我想删除 1 个值。

这是它的样子:

[
{
  "activity_name": "Wait Time","task_detail": [
    {
      "created_date": "2021-04-29 10:00:25.695254","row_ID": ""
    }
  ]
},{
  "activity_name": "Wait Time","task_detail": [
    {
      "created_date": "2021-04-29 10:28:42.131017","row_ID": ""
    }
  ]
}
]

这是我的代码:

result=[]
for gc_item in gc_response['Items']:
    for sch_act in gc_item['scheduled_activity']:
        result.append(sch_act)

如何为此删除重复值?在 scheduled_activity 下,只有我有值(Activity name 和 task_detail)

需要删除 1 个重复值。 输出应该是:

{
  "activity_name": "Wait Time","row_ID": ""
    }
  ]
}

解决方法

仅当列表中不存在activity_name时才能添加

result=[]
acitivity_names_added = []
for sch_act in gc_item['scheduled_activity']:
    if(sch_act['activity_name'] not in acitivity_names_added):
        result.append(sch_act) 
        acitivity_names_added.append(sch_act['activity_name'])

如果你想保留最后一个而不是第一个,那么以相反的顺序遍历这个循环

result=[]
acitivity_names_added = []
for sch_act in gc_item['scheduled_activity'][::-1]:
    if(sch_act['activity_name'] not in acitivity_names_added):
        result.append(sch_act) 
        acitivity_names_added.append(sch_act['activity_name'])
,

这类似于Remove duplicate Dict in list in Python

你的情况下,task_detail 似乎更复杂,所以像 [Dict(t) for t in {tuple(d.items()) for d in l}] 这样简单的元组方法可能不起作用,但你可以在同一个线程中尝试 json 方法:

import json

result = []
for gc_item in gc_response['Items']:
    set_of_jsons = {json.dumps(d,sort_keys=TruE) for d in gc_item['scheduled_activity']}
    result += [json.loads(t) for t in set_of_jsons]

它基本上将列表/字典转换为字符串,以便您可以按集合删除重复项。

大佬总结

以上是大佬教程为你收集整理的如何从python中的字典列表中删除重复项全部内容,希望文章能够帮你解决如何从python中的字典列表中删除重复项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。