[英]How to remove duplicates from list of dictionaries in 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 只有我有值(活动名称和 task_detail)
我需要删除 1 个重复值。 output 应该是:
{
"activity_name": "Wait Time",
"task_detail": [
{
"created_date": "2021-04-29 10:28:42.131017",
"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]
它基本上将 list/dict 转换为字符串,以便您可以按集合删除重复项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.