pythonlisttupleselementcoupling

coupling str elements from a list to a tuple list


I have the following list:

lines
['line_North_Mid', 'line_South_Mid',
 'line_North_South', 'line_Mid_South',
 'line_South_North','line_Mid_North' ]

I would like to couple them in a tuple list as follows, with respect to their names:

tuple_list
[('line_Mid_North', 'line_North_Mid'),
 ('line_North_South', 'line_South_North'),
 ('line_Mid_South', 'line_South_Mid')]

I thought maybe I could do a string search in the elements of the lines but it wont be efficient. Is there a better way to order lines elements in a way which would look like tuple_list

Paring Criteria:

If the both elements have the same Area_name: ('North', 'Mid', 'South')

E.g.: 'line_North_Mid' should be coupled with 'line_Mid_North'


Solution

  • Try this:

    from itertools import combinations
    
    tuple_list = [i for i in combinations(lines,2) if i[0].split('_')[1] == i[1].split('_')[2] and i[0].split('_')[2] == i[1].split('_')[1]]
    

    or I think this is better:

    [i for i in combinations(lines,2) if i[0].split('_')[1:] == i[1].split('_')[1:][::-1]]