1:n values in dictionary python -
i have trouble achieve simple task.
i have 2 lists (same length) this:
f1 = ['shallow', 'shallow', 'shallow', 'shallow', 'shallow', 'deep', 'deep', 'deep', 'shallow', 'shallow', 'shallow', 'shallow', 'shallow', 'shallow', 'shallow', 'deep', 'deep'] f2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
what build dictionary keys taken f1
, values should lists of numbers (f2
contains unique ids) of corresponding key.
something like:
d = {} d['shallow'] = [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14] d['deep'] = [5, 6, 7, 15, 16]
i tried looping zip
surely missed , last items appended:
d = {} i, j in zip(f1, f2): d[i] = [] d[i].append(j)
thanks suggestion
the problem d[i] = []
overwrite entry 'shallow'
or 'deep'
new, empty list. want if it's not present yet:
d = {} i, j in zip(f1, f2): if not in d: d[i] = [] d[i].append(j)
alternatively, use defaultdict
handle automatically:
from collections import defaultdict d = defaultdict(list) i, j in zip(f1, f2): d[i].append(j)
Comments
Post a Comment