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

时间:2015-11-12 14:41:36

标签: python python-3.x dictionary

我知道如何将字典转换为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(......)作为输出,我无法删除。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:21)

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

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

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

答案 1 :(得分:3)

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

如前所述,在使用python内置名称作为变量名之前,可能会在执行时遇到冲突并在阅读代码时产生混淆。

答案 2 :(得分:1)

是的,它确实看起来像这里提到的旧Python问题列表。但正如@Kasramvd所说,假设您使用的是python 3.X,dict.values是一个字典视图对象。 (另外,你肯定匆匆想出了这个例子,因为你有四个字典条目,但想要10个列表项,这是多余的。)

答案 3 :(得分:0)

@mgilson是对的。字典本身并不是有序的。

仍然可以这样做:

alpha = {"A":1,"B":2,"C":3,"D":4,"E":5}   # dictionary
my_list = []
for key,value in alpha.items() :
    my_list.append(value)

您可以从my_list访问您的“值”,但它不会有序。