如何从python中的key,value创建字典列表

时间:2017-08-07 08:04:58

标签: python python-3.x dictionary

如何从现有的键值列表创建词典字典?

celebr = ['Tony','Harry','Katty','Sam']
perc = [69,31,0,0]


d = dict(zip(celebr, perc))


dlist = []

for i in d.items():
    dlist.append(i)

print(dlist)

输出:

[('Tony': 69), ('Harry': 31), ('Katty': 0), ('Sam': 0)]

当我使用d.items时,它会自动给我元组,而不是字典。有没有优雅的方法来创建字典列表而不是元组?

需要获得以下结构:

[{'Tony': 69}, {'Harry': 31}, {'Katty': 0}, {'Sam': 0}]

5 个答案:

答案 0 :(得分:10)

list comprehension的良好用例:

dlist = [{k: v} for k, v in zip(celebr, perc)]

<强>输出:

>>> celebr = ['Tony', 'Harry', 'Katty', 'Sam']
>>> perc = [69, 31, 0, 0]
>>>
>>> [{k: v} for k, v in zip(celebr, perc)]
[{'Tony': 69}, {'Harry': 31}, {'Katty': 0}, {'Sam': 0}]

答案 1 :(得分:3)

这还不够

celebr = ['Tony','Harry','Katty','Sam']
perc = [69,31,0,0]

dlist = []

for i, j in zip(celebr, perc):
    dlist.append({i: j})

print dlist

答案 2 :(得分:3)

您可以使用zipdict实施。

dict(zip(celebr,perc))

结果:

In [14]: celebr = ['Tony', 'Harry', 'Katty', 'Sam'] 
In [15]: perc = [69, 31, 0, 0]

In [16]: dict(zip(celebr,perc))
Out[16]: {'Harry': 31, 'Katty': 0, 'Sam': 0, 'Tony': 69}

答案 3 :(得分:1)

您的示例仅创建一个包含词组items的列表。您的问题要求提供集合列表。如果你真的想要单独的dicts,那么使用冒号分隔键和值:

>>> [{k, v} for (k, v) in d.items()]
[{'Tony', 69}, {'Harry', 31}, {'Katty', 0}, {'Sam', 0}]
>>> [{k: v} for (k, v) in d.items()]
[{'Tony': 69}, {'Harry': 31}, {'Katty': 0}, {'Sam': 0}]

答案 4 :(得分:1)

尝试:

celebr = ['Tony','Harry','Katty','Sam']
perc = [69,31,0,0]

b = [{celebr[i]: perc [i]} for i in range(0, len(celebr))]

print(b)

输出:

[{'Tony': 69}, {'Harry': 31}, {'Katty': 0}, {'Sam': 0}]