命令元组元素

时间:2014-12-03 18:13:08

标签: python string tuples

我有这个带飞行数据的字符串,我想编写一个函数来接收航班的CODE并返回一个元组,其中包含按时间排序的航班CODEs。这可能吗?我已经尝试了很多方法,但我似乎无法做到。也许和dictionaires一起?

 "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)

2 个答案:

答案 0 :(得分:0)

您可以拆分字符串并进行排序,首先使用'\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']]

答案 1 :(得分:-1)

b="""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"""

print(sorted(b.split('\n'),key=lambda x:x.split(',')[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]

提供密钥即时间

上面的代码只做了排序没有产生元组:ifyou需要元组:

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')]