【问题标题】:Having trouble to loop through dictionaries in Python无法在 Python 中遍历字典
【发布时间】:2015-01-28 21:03:28
【问题描述】:

我正在学习 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)

【问题讨论】:

  • 我不认为您认为该错误消息可能有任何意义?在这种情况下,也许你应该告诉我们它是什么。
  • 更好,但哪一行是第 9 行?
  • 问题中的d 不是您的实际d,是吗?
  • 我的实际d是什么意思?
  • 尝试删除您的代码并从您的问题中复制/粘贴它。您的 sn-p 对我有用(请参阅我的初始答案)。你似乎在最后一行偷了一个奇怪的字符。

标签: python loops dictionary


【解决方案1】:

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

您还可以将编码设置为 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'>

【讨论】:

  • 嗯。因此,当您的答案明显错误时,您对其他所有人的答案都投了反对票。你怎么知道他在用python3.x
  • 我对所有其他答案投了反对票。他们都没有解决问题中的代码有什么问题。
  • 我为什么要这样做?无论如何,添加了一些推理。
【解决方案2】:

简单地说,这是 sublime 在我运行您的代码时问我的问题: 你的意思是 print(d[key]) 吗? :-)

你也可以使用:

d = {"Room" : 100, "Day" : 25, "Night" : 88}
for key in d:
    v = d[key]
    print(v)

必要时的说明: 对于“d”字典中的每个元素: 创建名为“v”的变量,分配给 d / 中的每个元素 打印变量 v

【讨论】:

  • 欢迎来到 StackOverflow。虽然此代码可能会解决问题,但包括解释如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释并说明适用的限制和假设。看看这里→How do I write a good answer?
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    你可以使用:

    d = {"Room" : 100, "Day" : 25, "Night" : 88}
    
    for key, value in d.items():
         print key, value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 2023-03-29
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-09-22
      相关资源
      最近更新 更多