从 Python 中的字典列表中创建以特定属性为键的新字典的简洁方法

tri*_*jjj 2 python dictionary

我希望从字典列表中创建一个新字典,并将这些字典中的特定属性作为新键。

这是一个更好地概述概念的示例:

原来的

[
   {
      "id":"asdf1234",
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   {
      "id":"sdfg2345",
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   {
      "id":"dfgh3456",
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
]
Run Code Online (Sandbox Code Playgroud)

变身

{
   "asdf1234":{
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   "sdfg2345":{
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   "dfgh3456":{
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用这个丑陋的代码来完成,我正在寻找一种更简洁优雅的方式来做到这一点。

[
   {
      "id":"asdf1234",
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   {
      "id":"sdfg2345",
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   {
      "id":"dfgh3456",
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
]
Run Code Online (Sandbox Code Playgroud)

Jac*_*sey 5

这可以使用Dictionary Comprehensionpop()方法来完成。下面是一个例子:

return {item.pop('id'):item for item in data}
Run Code Online (Sandbox Code Playgroud)

您将替换id为您想设置为键的任何属性。