Nilani Algiriyage
Nilani Algiriyage

Reputation: 35646

Python convertion of list of strings to list of tuples

How to convert following list

['abc,cde,eg,ba', 'abc,cde,ba']

in to list of tuples?

[('abc','cde','eg','ba'), ('abc','cde','ba')]

What I have tried

output = []

for item in my_list:
    a = "','".join((item.split(',')))
    output.append(a)

Upvotes: 0

Views: 90

Answers (3)

user3670684
user3670684

Reputation: 1153

you can split the 2 elements. Here is my code

['abc,cde,eg,ba', 'abc,cde,ba']
a='abc,cde,eg,ba'
b='abc,cde,ba'
c=[]
c.append(tuple(a.split(',')))
c.append(tuple(b.split(',')))
print c  

Upvotes: 1

sundar nataraj
sundar nataraj

Reputation: 8692

t=['abc,cde,eg,ba', 'abc,cde,ba']

for i in t:
    print tuple(i.split(','))

Upvotes: 2

Burhan Khalid
Burhan Khalid

Reputation: 174624

In your loop, you are splitting the string (which will give you a list), but then you are joining it back with a ,, which is returning to you the same string:

 >>> 'a,b'.split(',')
 ['a', 'b']
 >>> ','.join('a,b'.split(','))
'a,b'

You can convert a list to a tuple by passing it to the the built-in tuple() method.

Combining the above with a list comprehension (which is an expression that evaluates to a list), gives you what you need:

>>> [tuple(i.split(',')) for i in ['abc,cde,eg,ba', 'abc,cde,ba']]
[('abc', 'cde', 'eg', 'ba'), ('abc', 'cde', 'ba')]

The longhand way of writing that is:

result = []
for i in ['abc,cde,eg,ba', 'abc,cde,ba']:
    result.append(tuple(i.split(',')))
print(result)

Upvotes: 2

Related Questions