我正在使用python 2.7.6,并且无法使用排序(以字典列表的形式)对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()
答案 0 :(得分:3)
您需要在排序前将AveragePoints
转换为数字,例如
sorted(data, key = lambda item : float(item["AveragePoints"]), reverse = True)
现在AveragePoints
值将作为浮点数进行比较,以便排序正确。
注意:如果您确定AveragePoints
始终是一个整数,则可以使用int
函数代替float
。