2015-04-21 53 views
0

請考慮以下情況。我有一個列表:使用其他列表創建新列表以查找字典中的值 - python

feature_dict = vectorizer.get_feature_names() 

這只是有一些字符串,它們都是一種內部標識符,完全沒有意義的。我也有一本字典(它填充不同的代碼部分):

phoneDict = dict() 

這本字典已經提到標識符作爲密鑰,並分配給它們的值,那麼,這意味着什麼良好的價值觀。

我想創建一個新列表保留原列表(這是至關重要的)的順序,但用字典中的值替換每個元素。所以我想通過對列表中的每個元素應用函數來創建新列表,但沒有運氣。

我試圖創建一個功用:

def fastMap(x): 
    return phoneDict[x] 

然後映射它:

map(fastMap, feature_dict) 

它只是返回我

map object at 0x0000000017DFBD30. 

閒來無事

任何人試圖解決類似的親blem?

+3

'名單(圖(fastMap ,feature_dict))' –

+0

@TimCastelijns大聲笑,這工作。爲什麼? –

+0

'list()'將地圖返回的發生器轉換爲真正的列表。 – AShelly

回答

2

只是轉換結果列出:

list(map(fastMap, feature_dict)) 

爲什麼? map()返回迭代器,看到https://docs.python.org/3/library/functions.html#map

地圖(函數,迭代,...)

返回適用功能 以迭代的每一個項目,產生結果的迭代器。如果傳遞附加的 可迭代參數,則函數必須採用多個參數 ,並將其應用於並行所有迭代中的項目。使用 多次迭代,迭代器在最短迭代次數爲 耗盡時停止。對於函數輸入已經安排在參數元組中的 的情況,請參閱itertools.starmap()。

,你可以轉換到一個列表與list()

注:在Python 2,map()返回一個列表,但這在Python 3改爲返回一個迭代