首页 > 解决方案 > 如何让 Python 将变量视为字符串的集合(列表或集合)

问题描述

我有一个简单的代码如下:

for link in links:
    products[link] = get_products(link)

我期待links成为一组字符串。但是,有时它是单个链接,Python 似乎将其分解为字符串中的单个字符,这不是我想要的。即使它是单个字符串,如何使它将链接视为一组字符串?

更新:链接来自:

def read_from_file(name):
    with open(name, 'r') as file:
        links = file.read()
        links_set = links.split('\n')    
    return links_set

该文件每行包含一个链接。

标签: pythonpython-3.x

解决方案


如果link可以是一个set或单个str元素,isinstance请用于检查:

for link in {links} if isinstance(links, str) else links:

这是一种代码异味,表明返回的过程links不一致并且可能存在其他问题。

我通常也不推荐使用isinstance任何东西,因为 Python 非常适合鸭式打字。根据我的经验,字符串可能是最常见的例外,因为它们(通常不方便)是可迭代的。检查的优点str是它是一种非常特殊的类型,不太可能是鸭子类型,而set, list,tuple等通常可以与您在此处显示的片段互换。

如果您不需要集合,则可以将单个字符串包装links在您喜欢的任何其他容器类型中:[links],(links,)等。我建议避免使用set,因为它会消除排序信息,而序列类型则不会。


推荐阅读