Python 将通用列表转换为列表 [str] (Python 2.7)

Python Conversion of Generic list to List[str] (Python 2.7)

我的代码遇到问题。我需要从字典中提取字符串列表(由方法 1 返回)并将其作为参数传递给方法 2。

viewerIDs = Parent.GetViewerList()
if (len(viewerIDs) <= 0):
    return
viewerIDsNames = Parent.GetDisplayNames(viewerIDs)
viewerNames = []
for key in viewerIDsNames:
    viewerNames.append(str(viewerIDsNames[key]))
#Get their ranks
viewerRanks  = Parent.GetRanksAll (viewerNames)

我在最后一行收到以下错误

Expected List[str], got list

我尝试了以下方法来设置 viewerNames,但我遇到了同样的错误

#viewerNames = viewerIDsNames.items()
#viewerNames = list(viewerIDsNames.values())
#viewerNames = map(str,viewerIDsNames.values())
#viewerNames = [str(name) for name in viewerIDsNames]

任何人都可以指出我如何正确地转换它。

此致, 约书亚

我怀疑您是从 linter 而不是 Python 本身得到这个答案。你需要告诉 linter viewerNamesList[str]

viewerNames = []  # type: List[str]

一些 linter 尝试从第一次分配变量时就找出变量的类型,并且再也没有进一步查看。当您将 [] 分配给 viewerName 时,linter 知道它是一个列表,但不知道列表中的内容。