如何用python填充词典?

2024-04-20 04:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的列表:N = [[a,b,c],[d,e,f],[g,h,i]]

我想创建一个包含N中每个列表的所有第一个值的字典,这样我就有了

d = {1:[a,d,g],2:[b,e,h],3:[c,f,i]}

我试过很多东西,但我想不出来。我得到的最接近的结果是:

d = {}
for i in range(len(N)):
    count = 0
    for j in N[i]:
        d[count] = j
        count+=1

但是这本字典不适合我吗?我真的非常感谢您的指导,谢谢


Tags: in列表forlen字典countrange指导
3条回答

您可以使用zip(*N)转置列表,然后使用enumerate将索引和元素成对地进行dict

>>> dict((i+1, list(j)) for i, j in enumerate(zip(*N)))

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

备选方案基于@Vishal Singh的建议

>> dict((i, list(j)) for i, j in enumerate(zip(*N), start=1))

检查下面提供的代码并输出

N = [[a,b,c],[d,e,f],[g,h,i]]

d = {}

for y in range(0,len(N)):
    tmp=[]
    for x in N:
        tmp.append(x[y])
    d[y+1]=tmp

//Output:
{1: [a, d, g], 2: [b, e, h], 3: [c, f, i]}

希望有帮助

您可以使用dict理解(我使用N和4项,以避免混淆):

N=[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'],['w', 'j', 'l']]

{i+1:[k[i] for k in N] for i in range(len(N[0]))}

#{1: ['a', 'd', 'g', 'w'], 2: ['b', 'e', 'h', 'j'], 3: ['c', 'f', 'i', 'l']}

相关问题 更多 >