簡體   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