繁体   English   中英

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

[英]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 Comprehensionpop()方法来完成。 这是一个例子:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM