Python-唯一词典列表

发布于 2021-01-29 17:18:28

假设我有一个字典列表:

[
    {'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中实现这一目标?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    因此,请以键为临时做出决定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'}]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看