在flask上返回已排序的词典

2024-06-24 12:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经根据值对字典进行了排序,当我打印它时,它就被排序了。但是,当我将其返回到烧瓶模块时,它会按字母顺序打印。 如何使其按值排序返回

或者我可以问一下,为什么会这样

api请求的响应如下所示

{
  "bch_krw": {
    "timestamp": 1559285555322,
    "last": "513000",
    "open": "523900",
    "bid": "512100",
    "ask": "513350",
    "low": "476200",
    "high": "540900",
    "volume": "4477.20611753",
    "change": "-10900",
    "changePercent": "-2.08"
  },
  "fet_krw": {
    "timestamp": 1559285607258,
    ...
  },
  ...
}

如果有人想知道,我注意到api的音量有问题。而且,它是韩国语的

@ app.route('/volume')
def print_volume():
    url = "https://api.korbit.co.kr/v1/ticker/detailed/all"

    resp = requests.get(url)

    obj = resp.json()
    # print(obj)

    total_vol = 0.0

    for i in obj:
        total_vol += float(obj[i]['volume'])

    #obj = sorted(obj.items(), key=lambda x: x[1]['volume'], reverse=True)

    print(obj)

    dict_vol = {}

    for i in obj:
        dict_vol[i[0]] = i[1]['volume']

    sorted_top_five = dict(
        sorted(dict_vol.items(), key=lambda item: item[1], reverse=True))

    print(sorted_top_five)


    return sorted_top_five

Tags: apiobjurl排序toprespdicttimestamp
1条回答
网友
1楼 · 发布于 2024-06-24 12:16:37

将字典按字母顺序排列的原因是,从python dict类型到JSON类型的序列化在幕后进行,默认行为是按字母顺序排列dict键

因此,要按原样序列化dict,需要json模块。请参阅下面的代码片段

from flask import Flask
import requests
import json
app = Flask(__name__)

@app.route('/volume')
def print_volume():
    url = "https://api.korbit.co.kr/v1/ticker/detailed/all"

    resp = requests.get(url)
    
    obj = resp.json()

    total_vol = 0.0

    for i in obj:
        total_vol += float(obj[i]['volume'])

    dict_vol = {}

    for key in obj:
        dict_vol[key] = obj[key]['volume']

    sorted_top_five = dict(
        sorted(dict_vol.items(), key=lambda item: item[1], reverse=True))

    return json.dumps(sorted_top_five)

if __name__ == "__main__":
    app.run()

相关问题 更多 >