I have 5 lists and I want to map them to a hierarchical dictionary.
let\'s say i have:
temp = [25, 25, 25, 25]
volt = [3.8,3.8,3.8,3.8]
chan = [1,1,6
This is only slightly tested, but it seems to do the trick. Basically, what f
does, is to create a defaultdict
of defaultdicts
.
f = lambda: collections.defaultdict(f)
d = f()
for i in range(len(temp)):
d[temp[i]][volt[i]][chan[i]][rate[i]] = power[i]
Example:
>>> print d[25][3.8][6][14]
15.1
(The idea is borrowed from this answer to a related question.)
You can try the following ... I believe it serves what you want
>>> # Given your sample data.
>>> ans = {}
>>> for (t, v, c, r, p) in zip(temp, volt, chan, rate, power):
... if not t in ans:
... ans[t] = {}
... if not v in ans[t]:
... ans[t][v] = {}
... if not c in ans[t][v]:
... ans[t][v][c] = {}
... if not r in ans[t][v][c]:
... ans[t][v][c][r] = p
>>> print ans
{25: {3.8: {1: {12: 13.2, 14: 15.3}, 6: {12: 13.8, 14: 15.1}}}}