将字典列表转换为字典

时间:2015-04-03 12:33:41

标签: python dictionary

我在Python中有一个字典列表

[
{'id':'1', 'name': 'a', 'year': '1990'},
{'id':'2', 'name': 'b', 'year': '1991'},
{'id':'3', 'name': 'c', 'year': '1992'},
{'id':'4', 'name': 'd', 'year': '1993'},
]

我想将此列表转换为字典字典,其中键为name的值。请注意,此处列表中的不同项目具有不同的name值。

{
'a': {'id':'1', 'year': '1990'},
'b': {'id':'2', 'year': '1990'},
'c': {'id':'3', 'year': '1990'},
'd': {'id':'4', 'year': '1990'}
}

实现这一目标的最佳方法是什么?感谢。

这类似于Python - create dictionary from list of dictionaries,但不同。

4 个答案:

答案 0 :(得分:9)

您也可以使用Dictionary Comprehension实现此目的。

data = [
        {'id':'1', 'name': 'a', 'year': '1990'},
        {'id':'2', 'name': 'b', 'year': '1991'},
        {'id':'3', 'name': 'c', 'year': '1992'},
        {'id':'4', 'name': 'd', 'year': '1993'},
       ]

print {each.pop('name'): each for each in data}  

结果: -

{'a': {'year': '1990', 'id': '1'}, 
 'c': {'year': '1992', 'id': '3'}, 
 'b': {'year': '1991', 'id': '2'}, 
 'd': {'year': '1993', 'id': '4'}}

答案 1 :(得分:3)

def to_dict(dicts):
    if not dicts:
        return {}
    out_dict = {}
    for d in dicts:
        out_dict[d.pop('name')] = d
    return out_dict

答案 2 :(得分:1)

z = [
{'id':'1', 'name': 'a', 'year': '1990'},
{'id':'2', 'name': 'b', 'year': '1991'},
{'id':'3', 'name': 'c', 'year': '1992'},
{'id':'4', 'name': 'd', 'year': '1993'},
]
dict_ = {indic['name']:{
        k:indic[k] for k in indic if k != 'name'} for indic in z}

答案 3 :(得分:1)

尝试这样:

>>> my_list = [
{'id':'1', 'name': 'a', 'year': '1990'},
{'id':'2', 'name': 'b', 'year': '1991'},
{'id':'3', 'name': 'c', 'year': '1992'},
{'id':'4', 'name': 'd', 'year': '1993'},
]
>>> my_dict = {}
>>> for x in my_list:
...     my_dict[x['name']] = dict((key, value) for key,value in x.items() if key!='name')
... 
>>> my_dict
{'a': {'id': '1', 'year': '1990'}, 'c': {'id': '3', 'year': '1992'}, 'b': {'id': '2', 'year': '1991'}, 'd': {'id': '4', 'year': '1993'}}