我想逐行打印以下字典,其中第二行应该是列表本身(在Python 2x中):
dict = {1: [10, 20, 30], 2: [40, 50]}
for i in dict:
print ("i = %s" % i)
for j in dict[i]:
print dict[i][j]
print ("\n")
这是通过遵循此answer,但仍然出现超出范围的错误!!
i = 1
Traceback (most recent call last):
File "./t.py", line 26, in <module>
print dict[i][j]
IndexError: list index out of range
我自己在学习Python。如果这个问题对你们大多数人来说都是微不足道的,我道歉。
答案 0 :(得分:0)
只需将dict[i][j]
更改为j
也不要将变量用作dict
d = {1: [10, 20, 30], 2: [40, 50]}
for i in d:
print ("i = %s" % i)
for j in d[i]:
print j
print ("\n")
<强>输出:强>
C:\Users\dinesh_pundkar\Desktop>python dsp.py
i = 1
10
20
30
i = 2
40
50
C:\Users\dinesh_pundkar\Desktop>
答案 1 :(得分:0)
您使用列表值作为列表中的索引。 相反,只需打印值:
dict = {1: [10, 20, 30], 2: [40, 50]}
for i in dict:
print ("i = %s" % i)
for j in dict[i]:
print j
print ("\n")
答案 2 :(得分:0)
首先,不要“隐藏”保留字(例如,使用“ dict”作为变量名。)
第二,您要打印的列表只是所提供密钥的返回值。您的示例代码将遍历列表,然后将结果值用作索引,但实际上并非如此。
以下代码与您的示例最接近,它可以执行您想要的描述:
d = {1: [10, 20, 30], 2: [40, 50]}
for i in d:
print ("i = %s" % i)
print d[i]
在交互式Python会话中产生以下内容:
>>> d = {1: [10, 20, 30], 2: [40, 50]}
>>> for i in d:
... print ("i = %s" % i)
... print d[i]
...
i = 1
[10, 20, 30]
i = 2
[40, 50]
>>>
更严格的实现可能看起来像这样:
d = {1: [10, 20, 30], 2: [40, 50]}
for k,v in d.items():
print ("i = %s\n%s" % (k,v))
再次在交互式Python会话中产生以下内容:
>>> d = {1: [10, 20, 30], 2: [40, 50]}
>>> for k,v in d.items():
... print ("i = %s\n%s" % (k,v))
...
i = 1
[10, 20, 30]
i = 2
[40, 50]
>>>