从Python中的字典列表中创建具有特定属性作为键的新字典的简明方法

2024-06-26 13:26:47 发布

您现在位置: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

Tags: idagedata字典firstnamejohntransformedsmith
2条回答
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}

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

return {item.pop('id'):item for item in data}

您可以将id替换为希望设置为键的任何属性

相关问题 更多 >