在 Python 中将集合写入文件

Writing a Set To a File in Python

我想知道 python 中是否有任何预制模块可以从字符串中删除开始 Set( 和结束 ) 字符串:

set([`item1`,`item2`,`item3`])

以便将其格式化为列表?

您看到的是 set 字符串表示形式 。要从 set 获取 list,请对其调用 list()

>>> s = set(['item1', 'item2', 'item3'])
>>> s
set(['item2', 'item3', 'item1'])
>>> list(s)
['item2', 'item3', 'item1']

请记住,集合是无序集合

有几种不同的方法可以实现这一点。前两个已经在答案或评论中提到,但我想添加一些上下文以及第三种方法。

1。切片字符串

正如@Pynchia 在他的评论中所说,您可以简单地对结果进行切片。这适用于任何集合,并且是我的首选解决方案。很简单:

>>> x = set(['item1','item2','item3'])
>>> print str(x)[4:-1]
['item2', 'item3', 'item1']

2。转换为列表

正如@alecxe 在 中所说,您可以简单地将变量转换为 List,然后再转换为 String。但是,这有点 hackish,因为您正在创建一个全新的 List 对象,并且只需要获取其字符串表示形式的任何开销。即使对于非常大的列表也可能没问题,但最终开销将是有意义的。

>>> x = set(['item1','item2','item3'])
>>> print list(x)
['item2', 'item3', 'item1']

3。创建一个新的 class

对于您的具体情况,这可能有些矫枉过正,但您可以使用自己的字符串方法创建自己的 Set subclass。此代码假设 Python 2.

class mySet(set):
    def __str__(self):
        return super(Set,self).__str__()[4:-1]

执行示例:

>>> x = mySet(['item1','item2','item3'])
>>> print x
['item2', 'item3', 'item1']