如何从多个列表生成字典?

问题描述

我有以下列表:

valuevalues = [4,5,35,23,16,7,12]
labelvalues = ['john','joe','Pier','Paul','Moe','Jane','Ruth']
labels = ['label' for i in range(len(valuevalues))]
values = ['value' for i in range(len(valuevalues))]

我想生成以下字典:

[{'label': 'john','value':4},{'label': 'joe','value':5},{'label': 'Pier','value':35},...
 {'label': 'Ruth','value':12}]

我应该使用哪种循环或函数

解决方法

使用 zip 和以下理解:

[{"label": l,"value": v} for l,v in zip(labelvalues,valuevalues)]
# [{'label': 'john','value': 4},{'label': 'joe','value': 5},#  {'label': 'Pier','value': 35},{'label': 'Paul','value': 23},#  {'label': 'Moe','value': 16},{'label': 'Jane','value': 7},#  {'label': 'Ruth','value': 12}]
,

试试这个解决方案:

[{labels[i]:labelvalues[i],values[i]:valuevalues[i]} for i in range(len(valuevalues))]
,

通常认为先发布您的尝试是一件好事。

不管怎样,你要找的是:

result = [{'label': label,'value': value} for label,value in zip(labelvalues,valuevalues)]
,

试试这个

a = [4,5,35,23,16,7,12]
b = ['john','joe','Pier','Paul','Moe','Jane','Ruth']
c = []

for x,y in zip(a,b):
    m = {'label':y,'value':x}
    c.append(m)
print(c)

输出:

[{'label': 'john',{'label': 'Pier',{'label': 'Moe',{'label': 'Ruth','value': 12}]
,
listofdicts = [{'label':j,'value':i} for i,j in zip(valuevalues,labelvalues)]

标签和值列表是多余的。