2016-12-15 40 views
1

我從MySQLdb的取像這樣得到一些元組:重複鍵的數組字典?

((2L, 0.904672), (2L, 0.816745), (2L, 1.07916), (31L, 0.874432), (31L, 1.13517), (31L, 0.737347), (11L, 0.507236), (11L, 0.946989), (11L, 0.816373).....) 

有喜歡2L31L11L一些重複的值。我想使用的值作爲我的字典的鍵

我想問的是如何將這個元組轉換爲基於鍵的數組值的字典?

,所以我希望做什麼是這樣的:

{'2L':[0.904672,0.816745,1.07916], '31L':[0.874432,1.13517,0.737347],'11L':[0.507236,0.946989,0.816373],..........} 

任何幫助,將不勝感激:)

回答

2

沒有導入任何你可以這樣做:

data=(('2L', 0.904672), ('2L', 0.816745), ('2L', 1.07916), ('31L', 0.874432)) 

out={} 
for k,v in data: 
    out.setdefault(k,[]).append(v) 

如果kout然後k:[]存在被創建,否則v追加到out[k]

輸出:

{'31L': [0.874432], '2L': [0.904672, 0.816745, 1.07916]} 
3

defaultdict是一本字典,其值是列表,所以你只需添加你想要的值。

from collections import defaultdict 

results_dict = default_dict(list)  
for record in results: 
    for (k,v) in record: 
     results_dict[k].append(v) 
2

嘗試這樣:

dict = {} 
for k,v in results: 
    if k in dict: 
     dict[k].append(v) 
    else: 
     dict[k] = [v] 
2

退房defaultdict

from collections import defaultdict 
d = defaultdict(list) 
for val1, val2 in tups: 
    d[val2].append(val2)