我有一个txt文件,如下所示:
Raj,Joy:9,8,1
Smith,John:8
Campbell,Michelle:5,7,9
注意:文本文件中的文本行之间没有空行
我想按数字降序输出每个人的每个结果,例如
Campbell,Michelle:9
Raj,Joy:9
Raj,Joy:8
Smith,John:8
Campbell,Michelle:7
etc.
到目前为止,我掌握的代码是:
data = src.readlines()
for line in data:
record = line.split(':')
scoreList = record[1].split(',')
# Add name to fileRecord
for n in scoreList:
fileRecord.append(record[0])
# Two dimensional list created, each item is one set of scores
fileScores.append(scoreList)
其中src是文本文件。 给我带来的主要问题是,如果调用sortList上的.sort(),我会丢失顺序,因此无法将每个分数与其对应的名称进行匹配。如果我要创建一个字典,问题是将排序后的数据作为排序单独输出
{"Raj,Joy":[9,8,1],etc}
不会按“Raj,Joy”得到的每个分数进行排序,但我不能拆分列表,因为那样我会有重复的键。你知道吗
您已经填写了
fileRecord
和fileScores
。现在将它们合并并排序:您可能希望使用
itertools.izip
而不是python2中的内置zip
。你知道吗打开文件,然后
str.rpartition
每行将数字与名称分开。然后构建一个生成器,用每个数字展开name,排序,然后执行输出所需的任何操作,例如:代码:
输出:
您可以将
sorted
函数用于key
:因此,我们在上面一行代码中的所有内容如下:
首先,我们用两个新行('\n\n')拆分文本并将其放入
l
:然后您需要创建一个包含姓名和分数的配对列表:
最后,您需要首先链接嵌套列表,然后使用排序函数和以下键根据第二个元素(score)对该列表进行排序:
如果要写入文件:
相关问题 更多 >
编程相关推荐