【发布时间】:2016-02-22 19:44:56
【问题描述】:
我有这个列表:
mylist=[[1, 2, 4, 8], [16, 32, 64, 128], [256, 512, 1024, 2048]]
现在我想创建一个字典,为每个键分配列表中相应索引的值。
在这种情况下:correct_dict={0:1,1:2,2:4,3:8,4:16,...,11:2048}。
我打算用下面的函数来做:
def dictionarize3(array):
dict3={}
count_var=0
for i in range(len(array[0]) - 1) :
for j in range(len(array[0]) - 1):
dict3[count_var]=array[i][j]
count_var=count_var+1
return dict3
dict=dictionarize3(mylist)
但这就是我得到的:
wrong_dict={0: 1, 1: 2, 2: 4, 3: 16, 4: 32, 5: 64, 6: 256, 7: 512, 8: 1024}.
所以,len(correct_dict)=12,而len(wrong_dict)=9。
问题:是什么让我错过了列表中位于第三列的所有值?
【问题讨论】:
-
range(len(array[0]) - 1))=>range(3)即 ->[0,1,2]。所以你错过了最后一个元素 -
是的,但如果我去掉
-1,我会得到一个 out of index 错误。 -
为什么是
dict?如果您只是flatten 列表,您将获得一个具有完全相同索引和值的列表。例如。itertools.chain(*mylist). -
未来,想想听写理解:
{i: v for lst in mylist for i, v in enumerate(lst)}. -
@FrancescoCastellani:这个Code like a Pythonista 很好读。
标签: python list dictionary indexing