获取:TypeError:'dict_values'对象在使用 python 3.2.3 时不支持索引

新手上路,请多包涵

这是我的代码:

 {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 许可协议

阅读 458
2 个回答

In Python 3, dict.values() (along with dict.keys() and dict.items() ) returns a view , rather than a list.请参阅 此处 的文档。因此,您需要将对 --- 的调用包装在对 dict.values() list 调用中,如下所示:

 v = list(d.values())
{names[i]:v[i] for i in range(len(names))}

原文由 andersschuller 发布,翻译遵循 CC BY-SA 3.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 许可协议

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