如何将元组列表转换为字符串

时间:2017-02-05 04:04:56

标签: python string list tuples

如何将元组列表转换为字符串。 请参阅下面的案例

给定格式:

[(a,b),(c,d)]

我得到了什么:

代码:

[i for sub in tagged_in for i in sub]
tagged_in = [(a,b),(c,d)]
#Result = 'a,b,c,d'

必填格式:

'a-b,c-d'

有人可以更新我的代码以获得所需的格式

2 个答案:

答案 0 :(得分:6)

您可以简单地使用字符串对象的str.join方法:

>>> v = [("a","b"),("c","d")]
>>> ",".join(map("-".join,v))
'a-b,c-d'

编辑: 正如@MSeifert使用list-comprehension指出的那样:

>>> v= [("a","b"),("c","d")]
>>> ",".join(["-".join(tup) for tup in v])
'a-b,c-d'

虽然生成器通常是更好的选择,但有一些python函数(如str.joinsorted)可以更好地处理列表。如果性能是一个问题,那么在这种情况下最好使用list-comprehension:

>>> setup = 'v = [("a","b"),("c","d")]'
>>> repeat('",".join(map("-".join,v))',setup=setup)
[1.0896376324927814, 1.094142565225468, 1.0857250774588465]
>>> repeat('",".join(["-".join(tup) for tup in v])',setup=setup)
[0.8851533486462131, 0.8982919691165989, 0.9031148129180337]

答案 1 :(得分:3)

我通常比map更接近理解 - 方法:

>>> tagged_in = [('a','b'),('c','d')]
>>> ','.join(['-'.join(tup) for tup in tagged_in])
'a-b,c-d'

然而,这完全等同于@JonathanvonSchroeder的回答。只是代替map,这是使用列表理解,因为str.join无论如何都将参数转换为序列 - 所以这甚至可能更快一些。