【发布时间】:2019-06-06 22:45:04
【问题描述】:
我对 python 比较陌生,所以如果采用一种愚蠢的方式,我深表歉意。
基本上我有一堆具有可变键的 json 数据。这些代表统计数据。我正在尝试从最高到最低对数据进行排序,以显示使用最多的数据。
JSON EX:
{
"key1" : 10,
"key2" : 35,
"key3" : 5
}
期望的输出:
{
"key2" : 35,
"key1" : 10,
"key3" : 5
}
所以我目前拥有的是:
def single_val(data):
sorted_values = {'default': -10}
keys = map(str, data.keys())
for i in range(len(data)):
if(i == 0):
sorted_values[keys[0]] = sorted_values.pop('default')
sorted_values[keys[0]] = data[keys[0]]
else:
if(sorted_values.values()[i - 1] < data[keys[i]]):
sorted_values[keys[i]] = sorted_values.pop(keys[i - 1])
sorted_values[keys[i]] = data[keys[i]]
sorted_values[keys[i - 1]] = data[keys[i - 1]]
else:
sorted_values[keys[i]] = data[keys[i]]
所以问题是这仅适用于前 3 或 4 次迭代。在那之后,事情开始出现问题,不再起作用了。
上面的思考过程是如果新值小于prev它应该是prev并且prev应该是新的。这并没有真正发生。
那么有什么想法可以解决这个问题吗?
编辑:
只是想补充一下,上面的 json 显示的键基本上是按顺序递增的,但在我的应用程序中,我可能有如下键:
华夫饼 果汁 茶 蛋 筹码
所以它们是完全“随机的”。
【问题讨论】: