为什么使用 .items() 允许我遍历 defaultdict 否则变量读取错误?

问题描述

当尝试遍历 defaultdict 时,我的变量在应该作为列表读取时被读取为字符串,但是,当我稍微更改代码时,它起作用了,但我不知道确切原因。我的 defaultdict 是一个字典,里面有一个字典列表。代码看起来像这样

for engagement in engagement_by_account:
 for engagement in engagement:
    engagement['total_minutes_visited'] = float(engagement['total_minutes_visited'])

错误是:

TypeError: string indices must be integers

然而,当我把代码改成这样:

for key,engagement in engagement_by_account.items():
 for engagement in engagement:
    engagement['total_minutes_visited'] = float(engagement['total_minutes_visited'])

没有错误了。

解决方法

默认情况下,当您遍历字典(或 defaultdict)时,您将遍历该字典的 。在这里您似乎想迭代这些值,以便您可以执行您所做的操作或类似的操作:

for engagements in engagement_by_account.values():
  for engagement in engagements:
    engagement['total_minutes_visited'] = float(engagement['total_minutes_visited'])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...