Python排序方法将两位数字字符串视为三位数字字符串

标签 python json python-2.7 sorting dictionary

我正在使用 python 2.7.6,并且在使用 sorted (以字典列表的形式)对 json 对象进行排序时遇到问题。

当我第一次检查排序后的输出时,似乎列表只是部分排序,因为中间的数字较小。仔细观察,似乎像 93 这样的两位数被当作 93X 处理。有了这种洞察力,排序后的输出就显得正确了。

不知道为什么会这样。一开始我以为可能是我排序前没有把json对象正确转换成python对象。但是,我怀疑这是问题所在,因为代码中的 json.load 会将 json 对象反序列化为 python 对象。

Here's the jsbin “排序”的输出。我已经尝试重新排序已排序的列表,它给了我完全相同的结果。

代码如下:

import json

json_data = open('test.json')
data = json.load(json_data)

results = sorted(data, key = lambda item : item["AveragePoints"], reverse = True)

with open('output.json', 'w') as outfile:
    json.dump(results, outfile);

json_data.close()

最佳答案

排序前需要将AveragePoints转换为数字,如下所示

sorted(data, key = lambda item : float(item["AveragePoints"]), reverse = True)

现在 AveragePoints 值将作为 float 进行比较,以便排序正确。

注意:如果您确定AveragePoints 始终是一个整数,您可以使用int 函数代替float

关于Python排序方法将两位数字字符串视为三位数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470897/

相关文章:

python - 为什么conda在激活另一个环境后重新定义基础环境?

asp.net-mvc - 返回对象名称为 MVC 的 Json 结果

javascript - 从json动态构建dom树

python - Pyramid :路由模式和约束

Python pexpect - TIMEOUT 陷入回溯并退出

python - 覆盖python中的抽象方法

python - 要求正整数并验证输入的简单函数

javascript - 从json文件中读取数据并将其显示在html页面上

python - 如何将 dict 的值写入 openpyxl 中的空(新)列?

python - python独立开发应该选择docker吗?