我有一个元组列表,其中每个元组都是一个字符串:
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的新手,我不知道怎么做,有人可以帮助我吗?
答案 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',)]