python的dictionary的多个value问题
如果有个list:[[1,2,3,4],['a','b','c','d'],['e','f','g','h']],要把它写成dictionary的形式:{1:['a','...
如果有个list:[[1,2,3,4],['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']], 要把它写成dictionary的形式:{1:['a', 'e'], 2:['b', 'f'], 3:['c', 'g'], 4: ['d', 'h']}, 要怎么写~~~
展开
展开全部
用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')}
>>> 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')}
更多追问追答
追问
问下如果不用zip能做吗
追答
如果不用zip,那就自己写个循环啦,就像这样:
>>> d={}
>>> for i in range(len(a[0])):
d[a[0][i]] = [a[1][i],a[2][i]]
可是你为何不用zip呢?用python最大的好处就是它给你提供了很多便利的函数,你不愿意用这些函数,那学习python的意义在什么地方呢?
展开全部
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']}
追问
额,如果li里的list个数是不确定的要怎么写呢
追答
li=[[1,2,3,4],['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'],['i','j','k','l']]
D = {}
for i in li[0]:
D[i] = [item[i-1] for item in li[1:]]
print D
>>> {1: ['a', 'e', 'i'], 2: ['b', 'f', 'j'], 3: ['c', 'g', 'k'], 4: ['d', 'h', 'l']}
li里面你任意添加list都行,你试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
>>> 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')}
>>>
>>> dict([(x[0], x[1:]) for x in zip(*lst)])
{1: ('a', 'e'), 2: ('b', 'f'), 3: ('c', 'g'), 4: ('d', 'h')}
>>>
追问
问下如果不用zip的话怎么写呢
追答
d = {}
for i, k in enumerate(lst[0]):
d[k] = (lst[1][i], lst[2][i])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询