[英]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.