如何从列表列表中的键和值列表中制作字典列表

问题描述

我有两个列表: 首先是键列表, 第二个是具有列表的值列表。 我想列出字典,但我不知道该怎么做。

keys=['number','type']
values=[[1,2,3,4],['bool','int','float','double']]

我正在尝试做点什么,但我已经快要死了。

j=0
for k in keys:
    i=0
    for v in values[j]:
        a=keys[j]
        a=a+':'
        a=a+str(values[j][i])
        print(a)
        i=i+1
    j=j+1

我想要这样的输出

list=[
    {'number':1,'type':'bool'},{'number':2,'type':'int'},{'number':3,'type':'float'},{'number':4,'type':'double'}]

解决方法

使用 list comprehensionzip()dict()zip(*values) 将从 item 中的两个子列表中产生对 valuesdict(zip(keys,item)) 将从由 dict

生成的元组生成列表中的每个 zip(keys,item)
keys=['number','type']
values=[[1,2,3,4],['bool','int','float','double']]

spam = [dict(zip(keys,item)) for item in zip(*values)]
print(spam)

输出

[{'number': 1,'type': 'bool'},{'number': 2,'type': 'int'},{'number': 3,'type': 'float'},{'number': 4,'type': 'double'}]
,
keys=['number','double']]

newList = []
for i in range(len(values[0])):
    tmp = {}
    for j,key in enumerate(keys):
        tmp[key] = values[j][i]

    newList.append(tmp)

print(newList)

输出:

[{'number': 1,'type': 'double'}]

未来提示:您可以使用 enumerate(list) 而不是使用 i = i+1i += 1

,
out_list = []
for i in range(len(values[0])):
    out_list.append({
        keys[0]: values[0][i],keys[1]: values[1][i],})

print(out_list)
#[{'number': 1,'type': 'double'}]
,

您还可以将 list comprehensionzip 结合使用:

.then