从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}