这是我的代码:
{names[i]:d.values()[i] for i in range(len(names))}
这在使用 python 2.7.3 时完全正常;但是,当我使用 python 3.2.3 时,我收到一条错误 'dict_values' object does not support indexing
。如何修改代码以使其与 3.2.3 兼容?
原文由 Jesse Pet 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是我的代码:
{names[i]:d.values()[i] for i in range(len(names))}
这在使用 python 2.7.3 时完全正常;但是,当我使用 python 3.2.3 时,我收到一条错误 'dict_values' object does not support indexing
。如何修改代码以使其与 3.2.3 兼容?
原文由 Jesse Pet 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码的一个更简单的版本是:
dict(zip(names, d.values()))
如果要保持相同的结构,可以将其更改为:
vlst = list(d.values())
{names[i]: vlst[i] for i in range(len(names))}
(您可以轻松地将 list(d.values())
放在理解中而不是 vlst
;这样做很浪费,因为它每次都会重新生成列表)。
原文由 David Robinson 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
In Python 3,
dict.values()
(along withdict.keys()
anddict.items()
) returns aview
, rather than a list.请参阅 此处 的文档。因此,您需要将对 --- 的调用包装在对dict.values()
list
调用中,如下所示: