为什么在尝试遍历列表时出现“TypeError: 'numpy.int64' object is not iterable'”?

新手上路,请多包涵

我正在尝试比较列表中的 2 个项目作为字典中的值,但它一直被转换为 numpy.int64,我不明白为什么。

我只使用第一个循环和第二个循环测试了“valores”类型。在第一个中,我得到了一个列表,但在第二个中,我得到了 numpy.int64。

 import pandas as pd
import pprint
.
.
.
questionario = {'a': [1, 2], 'b': [3, 4], 'c': [5, 6]}

for variavel, valores in questionario.items():
  for q_passado, q_atual in valores:
    if q_passado and q_atual != 0:
      if q_atual / q_passado > 0.5:
        print(variavel, q_passado, q_atual)

我希望输出类似于“a 1 2”等。

原文由 Luck 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

您不需要 for 循环 valores ( for q_passado, q_atual in valores ) 因为它是一个包含 2 个元素的列表,可以通过表达式访问 valores[0]valores[1] 。您可以通过简单地更改为来修复它:

 import pandas as pd
import pprint
questionario = {'a': [1, 2], 'b': [3, 4], 'c': [5, 6]}

for variavel, valores in questionario.items():
    if valores[0] and valores[1]!= 0:
        if valores[1] / valores[0] > 0.5:
            print(variavel, valores[0], valores[1])

原文由 VietHTran 发布,翻译遵循 CC BY-SA 4.0 许可协议

您不能将变量分配给列表。相反,一个一个地分配变量。

  OLD: for q_passado, q_atual in valores:
 NEW: q_passado, q_atual = valores[0], valores[1]

 Result:
     a 1 2
     b 3 4
     c 5 6

原文由 jose_bacoy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题