Python:如何将字典转换为可下标数组?

新手上路,请多包涵

我知道如何在 Python 中将字典转换为列表,但不知何故,当我尝试获取结果列表的总和时,出现错误 'dict_values' object is not subscriptable 。另外,我打算只对列表中的几个项目求和。

 dict = {A:1, B:2, C:3, D:4}
arr = dict.values()
the_sum = sum(arr[1:3])

经过仔细检查,我注意到当打印出结果列表时,它总是给出 dict_values(......) 作为我无法删除的输出。我该如何解决这个问题?

原文由 quotable7 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 933
2 个回答

在 python-3.X 中 dict.values 不返回 list 对象,就像它过去在 python-2.X 中的执行方式一样。在 python-3.x 中,它返回一个 dict-value 对象,它是一个类似集合的对象,并使用哈希表存储其不适合索引的项目。此功能除了支持大多数 set 属性外,还针对成员资格检查等操作进行了非常优化(使用 in 运算符)。

如果要获取列表对象,则需要将结果传递给 list() 函数,将其转换为列表。

 the_values = dict.values()
SUM = sum(list(the_values)[1:10])

原文由 Mazdak 发布,翻译遵循 CC BY-SA 4.0 许可协议

通过将 dict.values() 分配给列表,您不会将其转换为列表;您只是将其存储为 dict_values (可能是一个对象)。要转换它,请写 value_list=list(dict.values()) 。现在,即使在打印 value_list 时,您也会得到列表元素,而不是 dict_values(......)

并且如前所述,不要使用 Python 内置名称作为变量名;它可能会在执行过程中导致冲突,并在阅读代码时造成混乱。

原文由 Devansh Bansal 发布,翻译遵循 CC BY-SA 4.0 许可协议

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