Python 遍历列表字典
我有一个字典(dict_of_list),它的值是元组列表(在_list内部)。我用10个条目填充字典,每个条目由100个元组组成。执行此操作的代码如下所示:Python 遍历列表字典,python,Python,我有一个字典(dict_of_list),它的值是元组列表(在_list内部)。我用10个条目填充字典,每个条目由100个元组组成。执行此操作的代码如下所示: inside_list = [] dict_of_list = collections.defaultdict(list) for j in range(0, 10): for i in range(0, 100): inside_list.append((j, i)) dict_of_list[j].ap
inside_list = []
dict_of_list = collections.defaultdict(list)
for j in range(0, 10):
for i in range(0, 100):
inside_list.append((j, i))
dict_of_list[j].append(inside_list)
现在,为了迭代字典并只打印_列表中列表中所有元组的第二个值(即j值),我想我需要使用2个循环,一个迭代字典,另一个迭代内部_列表。所以我写了以下内容:
for k in dict_of_list.keys():
for item in dict_of_list[k]:
print(item[1])
然而,我得到的结果是:
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
我的问题是,为什么“item”不是列表中的元组,而是看起来它是完整的内部列表
为了解决这个问题,我添加了另一个for循环:
for k in dict_of_list.keys():
for item in dict_of_list[k]:
for x in item:
print(x[1])
但是,for循环语句“for item in dict_of u list[k]”首先有什么用呢?您正在执行的是
dict_of u list[j]。append(in_list)
,因此dict_of u list[j]
是[[(x,x),(x,x)]
(一个包含单个元素的列表,也就是元组列表。您可能需要
dict_of_list[j] = inside_list
相反,在这种情况下,您根本不需要
defaultdict
。还要注意dict\u of\u list
的所有元素都是同一个列表(包含1000个元素),如果您想要不同的列表,请将内部的\u list
初始化移动到第一个循环中。这是一个虚假的示例,还是您真的希望列表以这种方式由i,j
组成
如果是这样,除了内部循环外,还有更有效的方法生成列表:
dict_of_list = {}
for j in range(10):
dict_of_list[j] = zip([j]*100,range(100))
因为每个
item
都是dict\u-of-u-list[k]
。你为什么希望它是一个元组呢?dict\u-of-u-list有什么用?我希望每个item都是在-u-list中的类型。因为这就是我在“dict\u-of-list[j]中附加的内容。附加(在-u-list中)”恐怕这是个假的例子。我真正的问题相当复杂,很可能会分散注意力。谢谢。我也这么想。祝你好运。