![](/img/trans.png)
[英]Is there a better way to create a dictionary with key and value from a list of dictionaries dynamically?
[英]Concise way to create new dictionary with specific property as key, from list of dictionaries in Python
我希望从字典列表中创建一个新字典,并将这些字典中的特定属性作为新键。
这是一个更好地概述概念的示例:
原来的
[
{
"id":"asdf1234",
"firstname":"john",
"lastname":"smith",
"age":30
},
{
"id":"sdfg2345",
"firstname":"jane",
"lastname":"doe",
"age":25
},
{
"id":"dfgh3456",
"firstname":"billy",
"lastname":"ericson",
"age":35
}
]
变身
{
"asdf1234":{
"firstname":"john",
"lastname":"smith",
"age":30
},
"sdfg2345":{
"firstname":"jane",
"lastname":"doe",
"age":25
},
"dfgh3456":{
"firstname":"billy",
"lastname":"ericson",
"age":35
}
}
我知道这可以使用这个丑陋的代码来完成,我正在寻找一种更简洁和优雅的方式来做到这一点。
transformed = {}
for i in range(len(data)):
transformed[data[i]['id']] = data[i]
del transformed[data[i]['id']]['id']
return transformed
这可以使用Dictionary Comprehension和pop()
方法来完成。 这是一个例子:
return {item.pop('id'):item for item in data}
您可以将id
替换为您想设置为键的任何属性。
dicts = [
{
"id":"asdf1234",
"firstname":"john",
"lastname":"smith",
"age":30
},
{
"id":"sdfg2345",
"firstname":"jane",
"lastname":"doe",
"age":25
},
{
"id":"dfgh3456",
"firstname":"billy",
"lastname":"ericson",
"age":35
}
]
new_dicts = {d.pop('id'): d for d in dicts}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.