我正在编写一个程序,该程序读入包含两列的文本文件。
它需要根据其中的最后一个字符对第一列进行排序,并输出到新文件。如果第一组中的最后一个字符相同,则按第一个字符排序。如果最后一个和第一个字符相同,则按中间字符排序。例如,从文件中读取的数据将是:
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中使用它。
答案 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