如何将集合中的条目连接成一个字符串?
Posted
技术标签:
【中文标题】如何将集合中的条目连接成一个字符串?【英文标题】:How to join entries in a set into one string? 【发布时间】:2011-11-11 12:48:16 【问题描述】:基本上,我试图将一组条目连接在一起以输出一个字符串。我正在尝试对列表使用类似于 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' object has no attribute 'join'
集合的等效调用是什么?
【问题讨论】:
【参考方案1】:我编写了一个处理以下极端情况的方法:
设置尺寸一。", ".join('abc')
将返回 "a, b, c"
。我想要的输出是"abc"
。
包括整数的集合。
空集应该返回""
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))
【讨论】:
可以使用" ".join('abc')
来获得所需的o/p "abc"
。 executable code in repl.it
有趣。刚刚意识到 set('abc') 和 'abc' 有不同的行为。这就是让我失望的原因。
我已更新executable code 为set & dictionary 操作
仅供参考,'abc' 是一个集合。 "".join(set(ip_data))
给出了字母的随机顺序(例如,'bca'),因为 set 创建了三个元素 'a', 'b', 'c' 但不保留顺序。【参考方案2】:
套装没有订单 - 因此当您将列表转换为套装时,您可能会丢失订单,即:
>>> orderedVars = ['0', '1', '2', '3']
>>> setVars = set(orderedVars)
>>> print setVars
('4', '2', '3', '1')
通常顺序会保留,但对于大型系列几乎肯定不会。
最后,万一人们想知道,您不需要在连接中使用 ', '。
只需:''.join(set)
:)
【讨论】:
【参考方案3】:', '.join(set_3)
join
是一个字符串方法,而不是一个集合方法。
【讨论】:
如果你的集合包含整数/长整数,你必须使用', '.join(str(s) for s in set_3)
【参考方案4】:
Set 没有 join
方法,但您可以使用 str.join
代替。
', '.join(set_3)
str.join
方法适用于任何可迭代对象,包括列表和集合。
注意:在包含整数的集合上使用它时要小心;在调用加入之前,您需要将整数转换为字符串。例如
set_4 = 1, 2
', '.join(str(s) for s in set_4)
【讨论】:
【参考方案5】:你有 join 语句向后尝试:
print ', '.join(set_3)
【讨论】:
【参考方案6】:set
和list
也没有这种方法join
,字符串有它:
','.join(set(['a','b','c']))
顺便说一句,您不应该使用名称list
作为变量。给它一个list_
、my_list
或其他名称,因为list
是非常常用的python 函数。
【讨论】:
【参考方案7】:join
在字符串上被调用:
print ", ".join(set_3)
【讨论】:
【参考方案8】:我认为你只是把它倒过来了。
print ", ".join(set_3)
【讨论】:
语法无效?print(", ".join(set_3))
2.7有效。以上是关于如何将集合中的条目连接成一个字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何将多行中的文本连接成SQL服务器中的单个文本字符串String?