Python - 唯一字典列表 [英] Python - List of unique dictionaries

查看:25
本文介绍了Python - 唯一字典列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个字典列表:

<预><代码>[{'id': 1, 'name': 'john', 'age': 34},{'id': 1, 'name': 'john', 'age': 34},{'id': 2, 'name': 'hanna', 'age': 30},]

并且我需要获取唯一字典的列表(删除重复项):

<预><代码>[{'id': 1, 'name': 'john', 'age': 34},{'id': 2, 'name': 'hanna', 'age': 30},]

谁能帮助我以最有效的方式在 Python 中实现这一目标?

解决方案

所以创建一个临时字典,键为 id.这会过滤掉重复项.字典的 values() 将是列表

在 Python2.7 中

<预><代码>>>>L=[... {'id':1,'name':'john', 'age':34},... {'id':1,'name':'john', 'age':34},... {'id':2,'name':'hanna', 'age':30},...]>>>{v['id']:v for v in L}.values()[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

在 Python3 中

<预><代码>>>>L=[... {'id':1,'name':'john', 'age':34},... {'id':1,'name':'john', 'age':34},... {'id':2,'name':'hanna', 'age':30},...]>>>list({v['id']:v for v in L}.values())[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

在 Python2.5/2.6 中

<预><代码>>>>L=[... {'id':1,'name':'john', 'age':34},... {'id':1,'name':'john', 'age':34},... {'id':2,'name':'hanna', 'age':30},...]>>>dict((v['id'],v) for v in L).values()[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

Let's say I got a list of dictionaries:

[
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30},
]

and I need to obtain a list of unique dictionaries (removing the duplicates):

[
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30},
]

Can anyone help me with the most efficient way to achieve this in Python?

解决方案

So make a temporary dict with the key being the id. This filters out the duplicates. The values() of the dict will be the list

In Python2.7

>>> L=[
... {'id':1,'name':'john', 'age':34},
... {'id':1,'name':'john', 'age':34},
... {'id':2,'name':'hanna', 'age':30},
... ]
>>> {v['id']:v for v in L}.values()
[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

In Python3

>>> L=[
... {'id':1,'name':'john', 'age':34},
... {'id':1,'name':'john', 'age':34},
... {'id':2,'name':'hanna', 'age':30},
... ] 
>>> list({v['id']:v for v in L}.values())
[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

In Python2.5/2.6

>>> L=[
... {'id':1,'name':'john', 'age':34},
... {'id':1,'name':'john', 'age':34},
... {'id':2,'name':'hanna', 'age':30},
... ] 
>>> dict((v['id'],v) for v in L).values()
[{'age': 34, 'id': 1, 'name': 'john'}, {'age': 30, 'id': 2, 'name': 'hanna'}]

这篇关于Python - 唯一字典列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆