如何用python填充词典?

如何用python填充词典?,python,dictionary,dictionary-comprehension,Python,Dictionary,Dictionary Comprehension,我有一个这样的列表: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 但是这本字典不适合我吗?

我有一个这样的列表:
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

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

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


您可以使用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))

这里有一个简单的解决方案。只需将列表传递到此函数

def list_to_dict(lis):
    a=0
    lis2=[]
    dict={}
    n=len(lis)

    while a<n:
        for el in lis:
            lis2.append(el[a])
        dict[a+1]=lis2
        lis2=[]
        a+=1

    return dict

my_list=[["a","b","c"],["d","e","f"],["g","h","i"]]
print(list_to_dict(my_list))
定义列表到目录(lis): a=0 lis2=[] dict={} n=len(lis)
而检查下面提供的代码并输出

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]}

希望有帮助

您好,谢谢您的回答,但这是在创建一个字典,每个列表中的项都在N内,而我希望字典中包含第一、第二、第三等项的列表。每个列表中的项都在N内?@bruno这是我首先想到的,但正确的输出是我当前的解决方案
enumerate(zip(*N,start=1))
将使其更清晰。此外,(1)除非有特殊原因,否则在0处启动字典键可能会更好,这取决于您的其他代码正在执行的操作;(2)您可能能够在输出中使用元组而不是列表,这同样取决于您的应用程序。应用这两种方法:dict(a表示枚举中的a(zip(*N)))
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]}