[英]Issue when printing dictionary
我想逐行打印以下字典,其中第二行應該是列表本身(在 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")
這是按照這個答案,但仍然有這個錯誤,說超出范圍!!
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。 如果這個問題對你們大多數人來說微不足道,我深表歉意。
只需將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>
您使用列表值作為列表的索引。 相反,只需打印值:
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")
首先,不要“隱藏”保留字(例如,使用“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]
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.