我有一个文本文件,我在其中放置用户信息,如姓名,年龄等。文件必须按年龄排序。
我是怎么做到的?我有一行中的用户信息,用空格分隔的不同类型的信息,我制作了程序,以便年龄(例如)在3块中:如果年龄为5,则有2个空格然后串#" 5"。或者如果年龄是110,则没有空格,只有字符串" 110"。年龄是排在第一位的信息,所以我只需要按年龄排序。
答案 0 :(得分:1)
你可以这样做:
result = []
for line in open(fileName).readlines():
line = line.strip()
age = line[0:3] #This will get the first 3 characters of the line
age = int(age)
thisLine = {"age":age, "line":line}
result.append(thisLine)
sortedList = sorted(result, key=lambda k: k["age"])
基本上你读过每一行
- 结束回车而不是
- 抓住3个三个字符(这将是你的年龄)
- 将这些转换为整数
- 将它们放入字典/ hashmap
-pop that into a array
- 通过hashmap的age属性对数组进行排序
希望这有帮助。
答案 1 :(得分:0)
这可以是修改后的HistogramSort的任务。如果允许随机访问写入,它将使用可变行长度(可选)。效率很高,可以处理大文件。它稳定地分类。
将120个整数计数器初始化为0。
逐行读取整个文件,获取年龄值和行长。
获取行长并将其添加到Age + 1的计数器中。
在第一次通过后,每个计数器都会告诉您给定年龄的所有行所需的空间(字符数)。
计算计数器的前缀和;这将告诉您给定年龄的行在排序时将从何处开始。最后一个计数器为您提供文件总大小。
然后在第二遍中,逐行读取,将每一行复制到新文件,它所属的位置(给定Age值)并更新相应的计数器。
[当人类的终生期望增加时,调整常数120。]