1

I get some tuples from fetching from MySQLdb like this:

((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).....)

There are some duplicate values like 2L,31L and 11L. I want to use the values as keys of my dict

what i want to ask is how to convert this tuples to dict with array values based from the keys?

so what i want to make is like this:

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

any help would be appreciated :)

Ardi Tan
  • 142
  • 3
  • 16

4 Answers4

3

defaultdict is a dictionary whose values are lists, so you simply add the values you want.

from collections import defaultdict

results_dict = default_dict(list)    
for record in results:
   for (k,v) in record:
       results_dict[k].append(v)
Community
  • 1
  • 1
Adam Hughes
  • 14,601
  • 12
  • 83
  • 122
2

Try something like this:

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

Without importing anything you can do:

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

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

If k doesn't exist in out then k:[] is created, otherwise v is appended to out[k].

Output:

{'31L': [0.874432], '2L': [0.904672, 0.816745, 1.07916]}
LMc
  • 12,577
  • 3
  • 31
  • 43
2

Check out defaultdict

from collections import defaultdict
d = defaultdict(list)
for val1, val2 in tups:
    d[val2].append(val2)
Community
  • 1
  • 1
aberger
  • 2,299
  • 4
  • 17
  • 29