考虑以下情况。我有一个清单:
feature_dict = vectorizer.get_feature_names()
其中只有一些字符串,所有字符串都是一种内部标识符,完全没有意义。我也有一本字典(它填写了不同的代码部分):
phoneDict = dict()
这个字典已经将标识符称为键,分配给它们的值就是好的值,这意味着什么。
我想创建一个新列表保留原始列表的顺序(这很关键)但是用字典中的值替换每个元素。所以我考虑通过将一个函数应用于列表的每个元素来创建新列表,但没有运气。
我试图创建一个功能:
def fastMap(x):
return phoneDict[x]
然后映射它:
map(fastMap, feature_dict)
它只会让我回头
map object at 0x0000000017DFBD30.
没有别的
有人试图解决类似问题吗?
答案 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中更改为返回迭代器