Python 使用动态键按值排序JSON
我对python还比较陌生,所以如果我采用了一种愚蠢的方式,我深表歉意 基本上,我有一堆json数据,它们具有可变键。这些是统计数字。我试图将数据从高到低排序,以显示哪些数据被使用得最多 JSON EX:Python 使用动态键按值排序JSON,python,json,sorting,Python,Json,Sorting,我对python还比较陌生,所以如果我采用了一种愚蠢的方式,我深表歉意 基本上,我有一堆json数据,它们具有可变键。这些是统计数字。我试图将数据从高到低排序,以显示哪些数据被使用得最多 JSON EX: { "key1" : 10, "key2" : 35, "key3" : 5 } 期望输出: { "key2" : 35, "key1" : 10, "key3" : 5 } 因此,我目前拥有的是: def single_val(data):
{
"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]]
def单值(数据):
排序的_值={'default':-10}
keys=map(str,data.keys())
对于范围内的i(len(数据)):
如果(i==0):
排序的_值[键[0]]=排序的_值.pop('默认值')
已排序的_值[键[0]]=数据[键[0]]
其他:
如果(排序的_values.values()[i-1]
所以问题是这只适用于前3或4次迭代。在那之后,事情开始出了问题,再也不起作用了
上面的思想过程是,如果新值小于prev,则应为prev,且prev应为新值。这并不是真的发生
那么,我该如何处理这个问题呢
编辑:
只是想添加,上面的json显示键基本上是按顺序递增的,但在我的应用程序中,我可能有如下键:
华夫饼干
果汁
茶
鸡蛋
筹码
所以它们完全是“随机的” 您可以为此目的使用:
>>> from collections import OrderedDict
>>> OrderedDict(sorted(d.items(), key=lambda x: x[1], reverse=True))
为此,您可以使用:
>>> from collections import OrderedDict
>>> OrderedDict(sorted(d.items(), key=lambda x: x[1], reverse=True))
可能的复制品可能的复制品你绝对摇滚。非常感谢:)我得等几分钟,但我会在可能的时候接受这个答案。你真是太棒了。非常感谢:)我必须等几分钟,但我会在可能的时候接受这个答案。