繁体   English   中英

打印字典时出现问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM