Python 3:如何过滤包列表



如何筛选此列表以仅显示与子字符串匹配的项?以下代码显示了为Jupyter笔记本安装的Python包的有序列表。

import pkg_resources
dists = [d for d in pkg_resources.working_set]
# Filter out distributions you don't care about and use.
dists.reverse()
dists

我试过了:

list(filter(lambda k: "fsspec" in k, dists))

但是得到错误:

TypeError: argument of type 'Distribution' is not iterable

我尝试在这里复制解决方案的模式:根据内容过滤字符串列表

您正在尝试用filter过滤类对象。您可以将其转换为字符串,也可以相应地更改筛选方法。对于这个用例,下面的代码应该可以正常工作。

import pkg_resources
dists = [d.project_name for d in pkg_resources.working_set]
# Filter out distributions you don't care about and use.
dists.reverse()
lst = list(filter(lambda k: "fsspec" in k, dists))
print(lst)

通常,要调试类型错误,请尝试使用type((获取正在处理的变量的类型,如果它是一个类,则可以使用__dict__属性打印出其属性,以便更好地了解您需要做什么。

最新更新