如何从列表列表中的键列表和值列表中创建字典列表
How make list of dict from list of keys and values from list of lists
我有两个列表:
首先是键列表,
第二个是具有列表的值列表。
我想制作字典列表,但我不知道该怎么做。
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'}]
keys=['number','type']
values=[[1,2,3,4],['bool','int','float','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': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
未来提示:您可以使用 enumerate(list)
而不是 i = i+1
或 i += 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': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
您也可以使用 list comprehension in combination with zip:
>>> keys = ['number', 'type']
>>> values = [[1, 2, 3, 4],['bool', 'int', 'float', 'double']]
>>> [{keys[0]: number, keys[1]: type} for number, type in zip(*values)]
[{'number': 1, 'type': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
使用 list comprehension
、zip()
和 dict()
。 zip(*values)
将从 values
中的两个子列表中生成对 item
。 dict(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','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'}]
keys=['number','type']
values=[[1,2,3,4],['bool','int','float','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': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
未来提示:您可以使用 enumerate(list)
而不是 i = i+1
或 i += 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': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
您也可以使用 list comprehension in combination with zip:
>>> keys = ['number', 'type']
>>> values = [[1, 2, 3, 4],['bool', 'int', 'float', 'double']]
>>> [{keys[0]: number, keys[1]: type} for number, type in zip(*values)]
[{'number': 1, 'type': 'bool'}, {'number': 2, 'type': 'int'}, {'number': 3, 'type': 'float'}, {'number': 4, 'type': 'double'}]
使用 list comprehension
、zip()
和 dict()
。 zip(*values)
将从 values
中的两个子列表中生成对 item
。 dict(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'}]