如何从现有的键值列表创建词典字典?
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}]
答案 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)
您可以使用zip
和dict
实施。
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}]