这是我的代码:

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

使用Python2.7.3时,这完全可以正常工作;然而,当我使用Python3.2.3时,我得到一个错误,声明为'dict_values' object does not support indexing.如何修改代码以使其与3.2.3兼容?

推荐答案

在Python 3中,dict.values()(以及dict.keys()dict.items())返回view,而不是列表.参见文档here.因此,您需要将拨打dict.values()的电话换成拨打list的电话,如下所示:

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

Python-3.x相关问答推荐

如何获得给定列表中所有可能的元素组合?

小部件padx和包方法ipadx有什么不同?

PythonPandas 创建一个列并添加到DataFrame

类变量的Python子类被视为类方法

在python内的powershell中转义$_

Django在POST到外部URL时如何进行CSRF保护? 更新

公开数据中的卫星图像网页抓取优化

python3,将整数转换为字节:对于小整数使用 to_bytes() 有哪些替代方法?

一起使用数据类和枚举

如何统计一个值连续出现的次数?

如何键入提示函数,在 Python 中通过类decorator 添加到类中

attrs 将 list[str] 转换为 list[float]

裁剪复数以解决 exp 中的溢出错误

正则表达式:匹配字符串中的分隔符(字母和特殊字符)以形成新的子字符串

IronPython 3 支持?

导入 python 模块而不实际执行它

Python:&= 运算符

Pyodbc:登录超时错误

TypeError:只有整数标量数组可以转换为标量索引

有效地判断一个元素是否在列表中至少出现 n 次