mapping multiple lists to dictionary

前端 未结 2 1536
死守一世寂寞
死守一世寂寞 2021-01-20 17:32

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         


        
相关标签:
2条回答
  • 2021-01-20 18:01

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

    0 讨论(0)
  • 2021-01-20 18:08

    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}}}}
    
    0 讨论(0)
提交回复
热议问题