如何使Python将变量视为字符串的集合(列表或集合)

Jor*_*ani 0 python python-3.x

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

for link in links:
    products[link] = get_products(link)
Run Code Online (Sandbox Code Playgroud)

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

更新:链接来自:

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

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

Mad*_*ist 5

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

for link in {links} if isinstance(links, str) else links:
Run Code Online (Sandbox Code Playgroud)

这是一种代码气味,表明返回的过程links不一致,可能还有其他问题.

我通常也不建议使用isinstance任何东西,因为Python非常适合鸭子打字.在我的经验中,字符串可能是最常见的例外,因为它们(通常不方便)可迭代.检查的优点str是,它是一个非常特殊的类型,它是不太可能鸭打字,同时set,list,tuple等往往是像你这样在这里展示了一个片段互换.

如果你不需要一组,你可以用一个单串links在你喜欢的任何其他容器类型:[links],(links,),等我会建议避免set,因为它摆脱了订购信息,而序列类型没有.