Python 将词典列表转换为词典
我有一个Python词典列表Python 将词典列表转换为词典,python,dictionary,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',
[
{'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'}
}
实现这一目标的最佳方式是什么?谢谢
这与类似,但不同。请尝试以下操作:
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}
>>> 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'}}
您也可以通过使用 结果:-
{'a': {'year': '1990', 'id': '1'},
'c': {'year': '1992', 'id': '3'},
'b': {'year': '1991', 'id': '2'},
'd': {'year': '1993', 'id': '4'}}
你试过什么吗?谢谢。是否可以创建它,以便不需要指定其他键,如
'id':x['id'],'year':x['year']
?您不需要guard子句(如果不使用dicts:return{}
)。如果dicts
为空,return out\u dict
仍将返回一个空字典。(另外,感谢您提醒我字典有一个pop
方法。)即使None
作为参数值传递,我也要返回dict。明白了。我想,你处理None
输入时的品味问题。
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'}}