Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用动态键按值排序JSON_Python_Json_Sorting - Fatal编程技术网

Python 使用动态键按值排序JSON

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):

我对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]]
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))

可能的复制品可能的复制品你绝对摇滚。非常感谢:)我得等几分钟,但我会在可能的时候接受这个答案。你真是太棒了。非常感谢:)我必须等几分钟,但我会在可能的时候接受这个答案。