【问题标题】: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'

集合的等效调用是什么?

【问题讨论】:

    标签: python list set python-2.7


    【解决方案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 codeset & 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】:

          setlist 也没有这种方法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有效。
              猜你喜欢
              • 2022-12-17
              • 2015-05-02
              • 1970-01-01
              • 2016-05-10
              • 1970-01-01
              • 2013-05-15
              • 2012-02-02
              • 2020-12-07
              • 2012-04-02
              相关资源
              最近更新 更多