抄写词典目录

2024-09-30 20:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python词典列表

[
  {
    "compania": "Fiat",
    "modelo": "2014",    
    "precio": "1000"
  },
  {
    "compania": "Renault",
    "modelo": "2014",    
    "precio": "2000"
  },
  {
    "compania": "Volkwagen",
    "modelo": "2014",    
    "precio": "3000"
  },
  {
    "compania": "Chevrolet",
     "modelo": "2014",    
     "precio": "1000"    
  },
  {
    "compania": "Peugeot",
    "modelo": "2014",    
    "precio": "2000"
  } 
]  

我想转换成这样的字典列表

{   
  "Fiat": {
    "modelo": "2014",    
    "precio": "1000"
  },
  "Renault": {
    "modelo": "2014",    
    "precio": "2000"
  },
  "Volkwagen": {
    "modelo": "2014",    
    "precio": "3000"
  },
  "Chevrolet": {
    "modelo": "2014",    
    "precio": "1000"
  },
  "Peugeot": {
    "modelo": "2014",    
    "precio": "2000"
  }  
}

Tags: 列表字典词典fiatrenaultmodelopreciochevrolet
3条回答

您可以通过迭代原始列表的元素来创建字典。假设您的列表名为car_list

d = { x["compania"]: {"modelo": x["modelo"], "precio": x["precio"] } for x in car_list }

我们可以用听写理解

{a.get('compania'): {k: v for k, v in a.items() if k != 'compania'} for a in c}

{'Fiat': {'modelo': '2014', 'precio': '1000'},
 'Renault': {'modelo': '2014', 'precio': '2000'},
 'Volkwagen': {'modelo': '2014', 'precio': '3000'},
 'Chevrolet': {'modelo': '2014', 'precio': '1000'},
 'Peugeot': {'modelo': '2014', 'precio': '2000'}}

其中c是原始数据

假设您的列表名为l,您可以通过简单的迭代和构建一个新字典d来实现这一点:

d = {}

for sub in l:
  d[sub.pop('compania')] = sub

这在字典d中产生:

{'Chevrolet': {'modelo': '2014', 'precio': '1000'},
 'Fiat': {'modelo': '2014', 'precio': '1000'},
 'Peugeot': {'modelo': '2014', 'precio': '2000'},
 'Renault': {'modelo': '2014', 'precio': '2000'},
 'Volkwagen': {'modelo': '2014', 'precio': '3000'}}

说明:对于该列表(sub)中的每个字典:sub.pop('compania')删除sub中键“compania”的条目并返回其关联值。然后,我们更新字典d,以拥有一个刚刚返回内容的键,并与该键关联,即删除该条目后sub的其余部分。你知道吗

相关问题 更多 >