Python:如何将集合中的条目连接成一个字符串?

Spe*_*cer 69 python list set python-2.7

基本上,我试图将一组中的条目连接在一起以输出一个字符串.我试图使用类似于列表的连接函数的语法.这是我的尝试:

list = ["gathi-109","itcg-0932","mx1-35316"]
set_1 = set(list)
set_2 = set(["mx1-35316"])
set_3 = set_1 - set_2
print set_3.join(", ")
Run Code Online (Sandbox Code Playgroud)

但是我收到此错误: AttributeError: 'set' object has no attribute 'join'

集合的等效调用是什么?

Jmj*_*jmh 142

', '.join(set_3)
Run Code Online (Sandbox Code Playgroud)

join是一个字符串方法,而不是set方法.

  • 如果你的集合包含整数/长整数,你必须使用`','.join(str(s)为set_3中的s) (12认同)

Jac*_*nds 28

集合没有join方法,但您可以使用str.join.

', '.join(set_3)
Run Code Online (Sandbox Code Playgroud)

str.join方法适用于任何可迭代对象,包括列表和集合.

注意:在包含整数的集合上使用它时要小心; 在调用join之前,您需要将整数转换为字符串.例如

set_4 = {1, 2}
', '.join(str(s) for s in set_4)
Run Code Online (Sandbox Code Playgroud)


MBy*_*ByD 5

join被称为对字符串:

print ", ".join(set_3)
Run Code Online (Sandbox Code Playgroud)


小智 5

集合没有顺序 - 因此当您将列表转换为集合时,您可能会丢失顺序,即:

>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
Run Code Online (Sandbox Code Playgroud)

一般来说,顺序会保留,但对于大型集合来说几乎肯定不会。

最后,以防万一人们想知道,您不需要在连接中使用“,”。

只是: ''.join(set)

:)