从Python中的字典列表中创建具有特定属性作为键的新字典的简明方法
我希望从字典列表中创建一个新字典,并将这些字典中的特定属性作为新键 以下是一个更好地概述该概念的示例: 原创从Python中的字典列表中创建具有特定属性作为键的新字典的简明方法,python,dictionary,Python,Dictionary,我希望从字典列表中创建一个新字典,并将这些字典中的特定属性作为新键 以下是一个更好地概述该概念的示例: 原创 [ { "id":"asdf1234", "firstname":"john", "lastname":"smith", "age":30 }, { "id&qu
[
{
"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={}
对于范围内的i(len(数据)):
已转换的[数据[i]['id']]=data[i]
del转换[数据[i]['id']['id']
转化收益
这可以使用和pop()
方法来完成。下面是一个例子:
返回{item.pop('id'):数据中项的项}
您可以将
id
替换为您希望设置为键的任何属性。您的代码的最大问题是对于范围内的i(len(data)):
,不要这样做,直接循环列表,对于数据中的d:transformed[d.pop('id')]=d
我同意它是有效的,它只是觉得必须有一种更具python风格的方式来实现同样的转换:)完美!这正是我要找的我很高兴我们把它整理好了!Python充满了这样的技巧
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}