问题描述
当尝试遍历 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'])