如何从值列表的字典中创建字典列表?

时间:2019-08-23 06:30:30

标签: python python-3.x list dictionary

我有一个字典,其中包含三个键值对,其中的值是一个列表。我想创建一个字典列表,其中的键是字符串,并且该字典的值应该是每个字典值中列表的值,

我想遍历该字典并进行列表理解,其中每个元素都是一个字典,但是我无法获取该键的值。

cars = {
        'cars' : ['audi', 'bmw', 'xyz'],
        'model' : ['abc', 'qwer', 'rty']
    }

car_list = [{'car': value_audi, 'car-model': value_abc} for car in cars]

how can I get this value_audi and value_abc for each list item?

结果应该是这样

car_list = [{'cars': audi, 'car_model': abc}, {'cars': bmw, 'car_model': qwer}, {'cars': xyz, 'car_model': rty}]

4 个答案:

答案 0 :(得分:3)

使用zip()

例如。

cars = {
        'cars' : ['audi', 'bmw', 'xyz'],
        'model' : ['abc', 'qwer', 'rty']
    }

result = [{'cars':c,'car_model':m} for c,m in zip(cars['cars'],cars['model']) ]
print(result)

O / P:

[{'cars': 'audi', 'car_model': 'abc'}, {'cars': 'bmw', 'car_model': 'qwer'}, {'cars': 'xyz', 'car_model': 'rty'}]

答案 1 :(得分:1)

使用<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#72CA5C54" android:centerColor="#43F71803" android:endColor="#272525" android:angle="45"/> </shape>

zip(*)

示例

car_list = [{'car': x, 'car_model': y} for x, y in zip(*cars.values())]

答案 2 :(得分:0)

如果您不想“硬编码”新字典的键,则可以使用:

from itertools import cycle

cars = {
        'cars' : ['audi', 'bmw', 'xyz'],
        'model' : ['abc', 'qwer', 'rty']
    }

[dict(e) for e in zip(*[zip(cycle([k]), v) for k, v in cars.items()])]

输出:

[{'cars': 'audi', 'model': 'abc'},
 {'cars': 'bmw', 'model': 'qwer'},
 {'cars': 'xyz', 'model': 'rty'}]

答案 3 :(得分:0)

Zip()可以在这里为您提供帮助。

zip()的目的是映射多个容器的相似索引,以便可以将它们用作单个实体使用。

cars = {
    'cars' : ['audi', 'bmw', 'xyz'],
    'model' : ['abc', 'qwer', 'rty']
}

result = [{'cars':x,'car_model':y} for x,y in zip(cars['cars'],cars['model']) ]
print(result)

预期输出为:

[{'cars': 'audi', 'car_model': 'abc'}, {'cars': 'bmw', 'car_model': 'qwer'}, {'cars': 'xyz', 'car_model': 'rty'}]

点击此链接以进一步阐明zip()

相关问题