如何用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]}