如何使用Python对这些数据进行排序?

时间:2014-06-14 23:17:24

标签: python sorting split alphabetical

我正在编写一个程序,该程序读入包含两列的文本文件。

它需要根据其中的最后一个字符对第一列进行排序,并输出到新文件。如果第一组中的最后一个字符相同,则按第一个字符排序。如果最后一个和第一个字符相同,则按中间字符排序。例如,从文件中读取的数据将是:

ac  123 
aba 456 
abd 456 
bda 123 
baa 123

对于第一行,"a"是第一个字符,"c"是最后一个字符,没有中间字符。

输出应如下所示:

aba 456 
baa 123 
bda 123 
ac  123 
abd 456

到目前为止,我已经能够读取文件并将其拆分,但是我仍然不知道如何按字母顺序对其进行排序。有人可以建议什么可以帮助我?

到目前为止,这是我的代码:

f = open('example.txt','r')
new = []
for row in f.readlines():
     data = row.split()
     print(data)

输出如下:

['ac', '123']
['aba', '456']
['abd', '456']
['bda', '123']
['baa', '123']

我是朝着正确的方向前进的吗?

我也在阅读有关lambda的内容,我不确定这是否有用,因为我从未在Python中使用它。

1 个答案:

答案 0 :(得分:3)

将数据读入列表,然后使用key=keyfunc排序。请原谅我没有给你一个完整的解决方案,但这就像家庭作业一样,所以。

def keyfunc(s):
    firstword = s.split()[0]
    char1 = firstword[-1]
    char2 = firstword[0]
    char3 = firstword[1] if len(firstword) == 3 else ""
    return char1 + char2 + char3