对每个元组为一个字符串的元组列表进行排序

时间:2014-11-18 00:45:33

标签: python list python-2.7 sorting

我有一个元组列表,其中每个元组都是一个字符串:

lst1 = [('Lunch, Lisbon, 14:15, 10, 12',), ('Lunch, Paris, 13:10, 14, 06',), ('Dinner, Madrid, 13:50, 18, 10',)]

我的列表可能比这个大,我想按时间排序(我的字符串的第3个元素)。 我想让每个元组成为一个列表,这就是我使用的代码:

    for element in lst1:
        for x in element:
            wordlist = x.split(', ')

给了我这个输出:

['Lunch', 'Lisbon', '14:15', '10', '12']
['Lunch', 'Paris', '13:10', '14', '06']
['Dinner', 'Madrid', '13:50', '18', '10']

所以现在我只需要对这个列表进行排序并将它们重新组合在一起,这样我就开始使用相同的东西,一个元组列表,其中每个元组都是一个字符串。 我试图使用list.sort,但这给了我一个错误。 我是python的新手,我不知道怎么做,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用key功能

>>> lst1 = [('Lunch, Lisbon, 14:15, 10, 12',), ('Lunch, Paris, 13:10, 14, 06',), ('Dinner, Madrid, 13:50, 18, 10',)]
>>> sorted(lst1, key=lambda x:x[0].split(", ")[2])
[('Lunch, Paris, 13:10, 14, 06',), ('Dinner, Madrid, 13:50, 18, 10',), ('Lunch, Lisbon, 14:15, 10, 12',)]

命名键函数的示例

>>> def key_func(x):
...     return x[0].split(", ")[2]
... 
>>> key_func(('Lunch, Lisbon, 14:15, 10, 12',))  # test it
'14:15'
>>> sorted(lst1, key=key_func)
[('Lunch, Paris, 13:10, 14, 06',), ('Dinner, Madrid, 13:50, 18, 10',), ('Lunch, Lisbon, 14:15, 10, 12',)]