2017-08-07 181 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}