无法在Python中循环遍历字典

时间:2015-01-28 21:03:29

标签: python loops dictionary

我正在学习Python,而且我在浏览字典方面遇到了一些麻烦。我想循环遍历整个字典并使用以下代码打印每个值:

d = {"Room" : 100, "Day" : 25, "Night" : 88}

for key in d:
    print d[key]

但是收到错误消息:

Traceback (most recent call last):
  File "python", line 9, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 18: ordinal not in range(128)

3 个答案:

答案 0 :(得分:0)

您在代码中隐藏了无效字符。 Python2默认使用ascii编码,因此它不允许超过127的字符(0xc3 == 195)。由于它似乎是一个错误,删除整个有问题的行并重新键入它 - 您的代码段在这里工作得很好。

您还可以将编码设置为utf-8,这应该会删除错误。但是你应该避免这个修复,因为它似乎不适合这种情况:

# top of the file
import sys
sys.setdefaultencoding('utf8')

初始答案,在实际错误之前:

您正在使用Python版本3+,它已更改print的语义。它现在是一个函数,错误建议也是如此,并使用print(somevalue)

Python2:

>>> for key in d:
...     print d[key]
... 
88
100
25
>>> type(print)
  File "<stdin>", line 1
    type(print)
             ^
SyntaxError: invalid syntax

Python3:

>>> for key in d:
...     print d[key]
  File "<stdin>", line 2
    print d[key]
          ^
SyntaxError: Missing parentheses in call to 'print'
>>> type(print)
<class 'builtin_function_or_method'>

答案 1 :(得分:-3)

查看Python dict文档。如果你想迭代值:

for value in d.values():
    print(value)

答案 2 :(得分:-3)

你可以使用:

d = {"Room" : 100, "Day" : 25, "Night" : 88}

for key, value in d.items():
     print key, value