如何将字典列表转换为字典.下面是dict列表
data = [{'name': 'John Doe', 'age': 37, 'sex': 'M'},
{'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
{'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}]
Run Code Online (Sandbox Code Playgroud)
至
data = {{'name': 'John Doe', 'age': 37, 'sex': 'M'},
{'name': 'Lisa Simpson', 'age': 17, 'sex': 'F'},
{'name': 'Bill Clinton', 'age': 57, 'sex': 'M'}}
Run Code Online (Sandbox Code Playgroud)
joa*_*uin 42
使用名称作为新键的可能解决方案:
new_dict = {}
for item in data:
name = item['name']
new_dict[name] = item
Run Code Online (Sandbox Code Playgroud)
使用python 3.x,您还可以以更好的方式使用dict comprehension来实现相同的方法:
new_dict = {item['name']:item for item in data}
Run Code Online (Sandbox Code Playgroud)
正如Paul McGuire在评论中所建议的那样,如果你不想在内部字典中使用这个名字,你可以这样做:
new_dict = {}
for item in data:
name = item.pop('name')
new_dict[name] = item
Run Code Online (Sandbox Code Playgroud)
phy*_*nfo 22
如果dicts不会共享密钥,那么您可以使用:
dict((key,d[key]) for d in data for key in d)
Run Code Online (Sandbox Code Playgroud)
在你的情况下生成一个带有列表作为值的dict可能更好吗?
newdict={}
for k,v in [(key,d[key]) for d in data for key in d]:
if k not in newdict: newdict[k]=[v]
else: newdict[k].append(v)
Run Code Online (Sandbox Code Playgroud)
这会产生:
>>> newdict
`{'age': [37, 17, 57], 'name': ['John Doe', 'Lisa Simpson', 'Bill Clinton'], 'sex': ['M', 'F', 'M']}`
Run Code Online (Sandbox Code Playgroud)
Vla*_*den 10
通过python
3.3
以上,您可以使用ChainMap
ChainMap将多个字典或其他映射组合在一起,以创建一个可更新的视图。如果未指定映射,则将提供一个空字典,以便新链始终至少具有一个映射。
from collections import ChainMap
data = dict(ChainMap(*data))
Run Code Online (Sandbox Code Playgroud)
试试这个方法:
dict((key, val) for k in data for key, val in k.items())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50584 次 |
最近记录: |