如何在Python中根据4个键中的2个键获得唯一的字典列表?
我有一个字典列表,上面有如下项目:如何在Python中根据4个键中的2个键获得唯一的字典列表?,python,list,dictionary,Python,List,Dictionary,我有一个字典列表,上面有如下项目: [ {'release_id': 1, 'issue_id': 1, 'release_name': 'example1', 'release_date': '2021-02-11', }, {'release_id': 1, 'issue_id': 2, 'release_name': 'example1', 'release_date': '2021-02-11', }, {'release_id': 2, 'issu
[
{'release_id': 1,
'issue_id': 1,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 1,
'issue_id': 2,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 2,
'issue_id': 3,
'release_name': 'example2',
'release_date': '2021-02-18',
}
]
我想要的是基本上忽略问题ID,并有一个独特的发布列表,如:
[
{'release_id': 1,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 2,
'release_name': 'example2',
'release_date': '2021-02-18',
}
]
到目前为止,我所做的一切都在发挥作用,但我相信有一种更为类似于蟒蛇的方式可以做到这一点:
unique_ids = []
unique_list = []
for i in release_list:
if i['release_id'] not in unique_ids:
unique_ids.append(i['release_id'])
unique_list.append({'release_id': i['release_id],
'release_name': i['release_name],
'release_date': i['release_date'],
})
print(unique_list)
试试这个
unique_list = []
dict = {}
for ele in release_list :
for k , v in ele.items():
if k == 'issue_id':
continue
else:
dict[k] = v
unique_list.append(dict.copy()) #You need to append a copy, otherwise
# you are just adding references to the same dictionary over and over again:
#Here we use str(i) to create a unique string that represents the dictionary which is used to filter the duplicates.
lst = list({str(i) : i for i in unique_list}.values())
print(lst)
您可以使用'release_id'作为键为字典列表创建一个临时字典,然后从临时字典的值中重新构造列表
release_list = [
{'release_id': 1,
'issue_id': 1,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 1,
'issue_id': 2,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 2,
'issue_id': 3,
'release_name': 'example2',
'release_date': '2021-02-18',
}
]
unique_list = [*{d['release_id']:d for d in release_list}.values()]
print(unique_list)
[{'release_id': 1, 'issue_id': 2, 'release_name': 'example1', 'release_date': '2021-02-11'},
{'release_id': 2, 'issue_id': 3, 'release_name': 'example2', 'release_date': '2021-02-18'}]
这不会删除问题id,但会将列表过滤到不同的版本
如果需要删除问题id,可以将其更改为:
[*{d['release_id']:d for d in release_list if [d.pop('issue_id')]}.values()]
[{'release_id': 1, 'release_name': 'example1', 'release_date': '2021-02-11'},
{'release_id': 2, 'release_name': 'example2', 'release_date': '2021-02-18'}]
如果删除与不需要的键相关联的键,该怎么办?它将不是唯一的发布列表,元素的数量将保持不变