按姓氏排序元组

时间:2013-12-06 04:33:42

标签: python

对于我的python作业,其中一个问题是:“编写一个完整的python程序,用逗号分隔的字段读取带有名字,姓氏和编号的文件。然后程序按照姓氏打印顺序打印出来。记住用于对可能需要的元组进行排序(key = lambda tup:tup [x])其中x是字段。“通常我不喜欢直接帮我做作业,但我甚至不知道从哪里开始,虽然我会尝试:

t=open('tlash.txt', 'r')
tup=t.readlines()
tup[2]
tup.sort()
print(tup)

因此,这将打开文件,读取行,然后将对元组的每一行中的第二个字段进行排序。这应该有用吗?

编辑:我没想过让自己的文件在lol,brainfart上进行测试。我也忘了定义tup:p但是无论如何,当我对它进行排序时,它按名字的字母顺序排列。我不确定如何让它按第二个字段排序?

编辑2:我也忘了索引如何工作,愚蠢的错误!在看到我弄乱的地方之后,我将我的代码重新编写为以下内容并且它可以正常运行,谢谢大家!

t=open('trash.txt', 'r')
tup=t.readlines()
tup.sort(key=lambda x:x.split(',')[1])
print(tup)

2 个答案:

答案 0 :(得分:1)

with open('trash.txt', 'r') as fin:
    for line in sorted(fin, key=lambda x:x.split(',')[1]):
        print line

答案 1 :(得分:0)

如果您想按姓氏排序,并假设姓氏是第二列:

with open('trash.txt') as f:
    lines = [line.split(",") for line in f]
    sorted_lines = sorted(lines, key=lambda x: x[1])

@ gnibbler的答案胜过我的。我将它存储在内存中,因此对于大文件来说这是低效的。