python的dictionary的多个value问题

2024-10-22 15:25:40
推荐回答(3个)
回答1:

用zip函数就能搞定

>>> a=[[1,2,3,4],['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]

用一次zip函数,你发现,数组里的数字两两合并到了一起

>>> zip(a[1],a[2])
[('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', 'h')]

用2次zip函数,就得到了你希望的数据,唯一不同的是,这个不是一个dictionary形式
>>> zip(a[0],zip(a[1],a[2]))
[(1, ('a', 'e')), (2, ('b', 'f')), (3, ('c', 'g')), (4, ('d', 'h'))]

然后你再调用dictionary的构造函数就OK了
>>> dict(zip(a[0],zip(a[1],a[2])))
{1: ('a', 'e'), 2: ('b', 'f'), 3: ('c', 'g'), 4: ('d', 'h')}

回答2:

li=[[1,2,3,4],['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]
D = {}
for i in li[0]:
    D[i] = [li[1][i-1],li[2][i-1]]
print D

>>> {1: ['a', 'e'], 2: ['b', 'f'], 3: ['c', 'g'], 4: ['d', 'h']}

回答3:

>>> lst = [[1,2,3,4],['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]
>>> dict([(x[0], x[1:]) for x in zip(*lst)])
{1: ('a', 'e'), 2: ('b', 'f'), 3: ('c', 'g'), 4: ('d', 'h')}
>>>