如何使用Python从文本文件中排序键

3
我有一个包含数字的文本文件,格式如下:
7.2: 2
7.3: 2
6.5: 2
6.4: 6
6.3: 2
7.7: 2
6.1: 3
7.5: 1
7.8: 4
7.9: 1
6.9: 3
6.8: 4
10.1: 8
10.0: 9
10.3: 7
10.2: 10
10.5: 13
10.4: 18
10.7: 8

我想要的是仅使用键来对它们进行排序。 我无法将它们附加到字典中并仅使用键进行排序。 这是我尝试过的方法。
def sorting():
    file = open(r'test.txt', 'r')
    text = file.read().split()
    keys = {}
    for num in text:
        if num not in keys:
            keys.append(num)
            keys.sort(key=float)
    json.dump(keys, open('test1.txt', 'r')

sorting()

@ShadowRanger 谢谢你,我编辑了我的问题,并放上了对我无效的代码。 - Karl Guevarra
那段新代码在语法上不合法(缺少括号),并且存在严重的基本错误(向只读文件写入)。尝试简化您的函数以执行一项任务(例如,对从该文件中读取的行进行排序并返回它们,没有I/O与文件交互)。在交互式解释器中尝试使用更有针对性的代码可能有助于您理解排序步骤。简单的print(例如,print text [0])可能会帮助您理解I/O问题(提示:您的键和值甚至没有存储在列表的同一索引中)。 - ShadowRanger
@ShadowRanger 谢谢!我现在明白了。那个提示对我很有帮助。 - Karl Guevarra
1个回答

0
你可以读取这些行,将它们按冒号分割成元组,使用第二个值进行排序,然后将它们写入输出文件。
示例代码:
with open('input.txt', 'r') as in_file:
  lines = sorted((l.split(": ") for l in in_file.readlines()), key=lambda l: float(l[0]))
  with open('output.txt', 'w') as out_file:
    for line in lines:
       out_file.write(": ".join(line))

好的发现!已修复。 - Hesham Attia
@HeshamAttia 非常感谢!它起作用了!虽然我将double更改为float,因为出现错误:NameError:全局名称'double'未定义。但这对我很有帮助!非常感谢! - Karl Guevarra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接