Python 如何将集合中的条目合并为一个字符串?

Python 如何将集合中的条目合并为一个字符串?,python,list,set,python-2.7,Python,List,Set,Python 2.7,基本上,我试图将集合中的条目连接在一起,以便输出一个字符串。我试图使用类似于列表的join函数的语法。以下是我的尝试: 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(", ") 但是我得到了这个错误:AttributeError:“set”对象没有属性“join” 集合的等价调用是什么

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

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(", ")
但是我得到了这个错误:
AttributeError:“set”对象没有属性“join”


集合的等价调用是什么

我想你只是把它倒过来了

print ", ".join(set_3)

join
是字符串方法,而不是set方法。

对字符串调用
join

print ", ".join(set_3)

无论是
集合
还是
列表
都没有这样的方法
连接
,字符串都有:

','.join(set(['a','b','c']))

顺便说一下,您不应该对变量使用name
list
。给它一个
列表
我的列表
或其他名称,因为
列表
是python函数中经常使用的函数。

您将join语句向后调用,请尝试:

print ', '.join(set_3)

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

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

注意:在包含整数的集合上使用此选项时要小心;在调用join之前,需要将整数转换为字符串。比如说

set_4 = {1, 2}
', '.join(str(s) for s in set_4)

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

>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
一般来说,订单将保持不变,但对于大型集合,几乎肯定不会

最后,以防万一人们想知道,你不需要一个',在加入

仅:“”。加入(集合)


:)

我写了一个处理以下边缘情况的方法:

  • 定一号。join({'abc'})将返回
    “A,b,c”
    。我想要的输出是“abc”
  • 集合包括整数
  • 空集合应返回
    “”

如果集合包含整数/长整数,则必须使用“
”,“.join(集合3中s的str(s)
无效语法否<代码>打印(“,”.join(set_3))它在2.7中有效。可以使用
”.join({'abc'})
获得所需的o/p
“abc”
。有趣。刚刚意识到set('abc')和{'abc'}有不同的行为。这正是让我失望的地方。我已经更新了操作&FYI,{'abc'}是一个集合。join(set(ip_data))给出了字母的随机顺序(例如,“bca”),因为set创建了三个元素{'a','b','c',但不保留顺序。
set_4 = {1, 2}
', '.join(str(s) for s in set_4)
>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
def set_to_str(set_to_convert, separator=", "):
        set_size = len(set_to_convert)
        if not set_size:
            return ""
        elif set_size == 1:
            (element,) = set_to_convert
            return str(element)
        else:
            return separator.join(map(str, set_to_convert))