繁体   English   中英

python3字典,值作为列表

[英]python3 dictionary, values as a list

以下代码在Python 2.7中没有任何问题,但是在Python 3.4.3中会引发TypeError: iteration over a 0-d array

import numpy as np
def c1():
        mat=[]
        mat.append(np.array(map(float,np.random.rand(7))))
        return mat
mylist=[]
mydict_={}
mydict_['dog']=c1()
mydict_['big']=c1()

justKeys={label:1 for label in list(mydict_.keys())}

for idx, word in enumerate(justKeys.keys()):
        mylist.append(np.array(map(float, mydict_[word][0])))

为了使python2.7和3.4中的mylist列表获得相同的结果,我该怎么办?

问题不在于字典方法,而在于map函数,在Python 3中将其更改为返回迭代器而不是列表。 Numpy无法正确处理迭代器,因此您需要添加一个list调用来解决问题:

def c1():
    mat=[]
    mat.append(np.array(list(map(float,np.random.rand(4,7)))))
    return mat

代码的其余部分有些混乱,因为您正在创建一个没有任何有用内容的新字典,然后在不使用索引的情况下枚举了新字典的键。 似乎您可以只用my_list = [x[0] for x in dict_.values()]并得到相同的结果(因为值列表中的第一项已经是一个浮点数的numpy数组,一旦将c1修复为以上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM