使用其他列表创建新列表以在字典中查找值 - python

时间:2015-04-21 19:42:42

标签: python list dictionary

考虑以下情况。我有一个清单:

feature_dict = vectorizer.get_feature_names()

其中只有一些字符串,所有字符串都是一种内部标识符,完全没有意义。我也有一本字典(它填写了不同的代码部分):

 phoneDict = dict()

这个字典已经将标识符称为键,分配给它们的值就是好的值,这意味着什么。

我想创建一个新列表保留原始列表的顺序(这很关键)但是用字典中的值替换每个元素。所以我考虑通过将一个函数应用于列表的每个元素来创建新列表,但没有运气。

我试图创建一个功能:

def fastMap(x):
    return phoneDict[x]

然后映射它:

map(fastMap, feature_dict)

它只会让我回头

map object at 0x0000000017DFBD30. 

没有别的

有人试图解决类似问题吗?

1 个答案:

答案 0 :(得分:2)

只需将结果转换为列表:

list(map(fastMap, feature_dict))

为什么呢? map()返回一个迭代器,请参阅https://docs.python.org/3/library/functions.html#map

  

map(function,iterable,...)

     

返回应用函数的迭代器   到每个可迭代的项目,产生结果。如果有的话   传递可迭代的参数,函数必须采用那么多参数   并且并行地应用于所有迭代的项目。同   多个迭代,迭代器在最短迭代时停止   累。对于已经安排了功能输入的情况   参数元组,参见itertools.starmap()。

您可以转换为list()

的列表

注意:在python 2中,map()返回一个列表,但在python 3中更改为返回迭代器