在 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']
我想知道 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']