重复键的数组字典?

时间:2016-12-15 18:44:00

标签: python dictionary

我从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。我想将这些值用作我的字典的键

我想问的是如何使用基于键的数组值将这个元组转换为dict?

所以我想做的是这样的:

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

任何帮助将不胜感激:)

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

尝试这样的事情:

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

答案 2 :(得分: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)

如果k中不存在out,则会创建k:[],否则v将附加到out[k]

<强>输出:

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

答案 3 :(得分:2)

查看defaultdict

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