Python 有序元组元素
我有一个包含航班数据的字符串,我想写一个函数,它接收航班代码并返回一个按时间排序的航班代码元组。这可能吗?我已经尝试了很多方法,但似乎都做不到。也许是用字典Python 有序元组元素,python,string,tuples,Python,String,Tuples,我有一个包含航班数据的字符串,我想写一个函数,它接收航班代码并返回一个按时间排序的航班代码元组。这可能吗?我已经尝试了很多方法,但似乎都做不到。也许是用字典 "KLM75, Amsterdam, 14:35, 60, 50 AF111, Paris, 14:20, 50, 64 LH333, Frankfurt, 14:10, 112, 203 KLM71, Madrid, 14:55, 120, 100 TAP103, Salvador, 15:20, 174, 210 LH123
"KLM75, Amsterdam, 14:35, 60, 50
AF111, Paris, 14:20, 50, 64
LH333, Frankfurt, 14:10, 112, 203
KLM71, Madrid, 14:55, 120, 100
TAP103, Salvador, 15:20, 174, 210
LH123, Berlin, 15:10, 115, 210"
#(CODE, Origin, time, passengers, lugage)
您可以拆分字符串并进行排序,首先使用
'\n'
拆分字符串,然后使用'、'
拆分字符串,最后您可以根据拆分字符串的第2个元素(即时间)使用sorted
函数:
>>> t=tuple(i.split(',') for i in s.split('\n'))
>>> sorted(t,key= lambda x : x[2])
[['LH333', ' Frankfurt', ' 14:10', ' 112', ' 203'], ['AF111', ' Paris', ' 14:20', ' 50', ' 64'], ['KLM75', ' Amsterdam', ' 14:35', ' 60', ' 50'], ['KLM71', ' Madrid', ' 14:55', ' 120', ' 100'], ['LH123', ' Berlin', ' 15:10', ' 115', ' 210'], ['TAP103', ' Salvador', ' 15:20', ' 174', ' 210']]
使用换行符对上述代码进行整型拆分,以获取所有行,然后使用sorted对它们进行及时排序。lambda将使用split(',')[2]提供关键ie时间
上面的代码只进行了排序,没有生成元组:如果需要元组:
print(sorted([tuple(x.split(',')) for x in b.split('\n')],key=lambda x:x[2]))
[('LH333', ' Frankfurt', ' 14:10', ' 112', ' 203'), ('AF111', ' Paris', ' 14:20', ' 50', ' 64'), ('KLM75', ' Amsterdam', ' 14:35', ' 60', ' 50'), ('KLM71', ' Madrid', ' 14:55', ' 120', ' 100'), ('LH123', ' Berlin', ' 15:10', ' 115', ' 210'), ('TAP103', ' Salvador', ' 15:20', ' 174', ' 210')]
我尝试过从各种方法开始,将项目拆分为一个列表,弹出元素,但我总是无法继续…您能否提供一个示例输入和预期输出?我很难理解你们所说的“一个按时间排序的飞行代码元组”是什么意思。“各种方法”并不比“许多方法”更具体。
print(sorted([tuple(x.split(',')) for x in b.split('\n')],key=lambda x:x[2]))
[('LH333', ' Frankfurt', ' 14:10', ' 112', ' 203'), ('AF111', ' Paris', ' 14:20', ' 50', ' 64'), ('KLM75', ' Amsterdam', ' 14:35', ' 60', ' 50'), ('KLM71', ' Madrid', ' 14:55', ' 120', ' 100'), ('LH123', ' Berlin', ' 15:10', ' 115', ' 210'), ('TAP103', ' Salvador', ' 15:20', ' 174', ' 210')]