2017-08-07 122 views
2

如何创建已有键值列表字典的字典的名单?如何创建键,值字典在python

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

你想要的结构是'set's一个'list';而不是“字典”。你的意思'[{ '托尼':69},{ '哈利':31},{ '凯蒂':0},{ '萨姆':0}]'?如果是,为什么?这岂不是更好地在单个'dictionary'像'{ '托尼':69, '哈利':31, '凯蒂':0, '萨姆':0}所有条目'? –

+0

看看这里:https://stackoverflow.com/questions/3783530/python-tuple-to-dict – zypro

+0

对不起,是的,我想词典列表,这是一个错误 –

回答

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 
+0

@Ivan这个答案对你有帮助吗?你仍然面临问题吗? –

0

你举的例子只是创建包含类型的字典items列表。你的问题要求提供一套清单。如果你真的想个别类型的字典,然后使用一个冒号分隔键和值:

>>> [{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}] 
9

良好的用例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}] 
+0

非常感谢,它工作正常 –

0

尝试:

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}] 
1

您可以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}