如何将 .json 添加到列表或字典中进行排序

How to add .json to List or dictionary for sorting

所以我正在从 websocket connection.Like 获取数据。

{"provider":"cryptocom","from":"BCH","rate":281.951036,"to":"USDT"}
{"provider":"gemini","from":"DOGE","rate":0.13055346,"to":"USDT"}
{"provider":"hitbtc","from":"BCH","rate":282.7334121,"to":"USDT"}
{"provider":"exmo","from":"BCH","rate":280.98464349,"to":"USDT"}
{"provider":"bitfinex","from":"ZEC","rate":120.568875,"to":"USDT"}
{"provider":"bitstamp","from":"BTC","rate":37692.36549,"to":"USD"}

我想对它们进行排序,例如:获取每个 ("from":"BCH") 并获取 lowest 和 highest速度 像这样:

BCH - Highest- 282.7334121 Provider - cryptocom  <--> Lowest-280.98464349 provider- exmo 
Doge - Highest- 0.13055346 Provider - gemini  <--> Lowest-0.12055346 provider- cryptocom
....

所以我正在寻找在 python 中做到这一点的方法,但我不确定如何从点 a 到点 b :D ,

将所有数据放入列表后,您可以使用 itertools.<b>groupby</b>:

from itertools import groupby


def main() -> None:
    data = [
        {"provider":"cryptocom","from":"BCH","rate":281.951036,"to":"USDT"},
        {"provider":"gemini","from":"DOGE","rate":0.13055346,"to":"USDT"},
        {"provider":"hitbtc","from":"BCH","rate":282.7334121,"to":"USDT"},
        {"provider":"exmo","from":"BCH","rate":280.98464349,"to":"USDT"},
        {"provider":"bitfinex","from":"ZEC","rate":120.568875,"to":"USDT"},
        {"provider":"bitstamp","from":"BTC","rate":37692.36549,"to":"USD"},
    ]
    for coin, group in groupby(sorted(data, key=lambda d: d['from']),
                               key=lambda d: d['from']):
        sorted_group = sorted(group, key=lambda d: d['rate'])
        highest, lowest = sorted_group[-1], sorted_group[0]
        print(
            f'{coin} '
            f'- Highest - {highest["rate"]} Provider - {highest["provider"]} '
            '<--> '
            f'- Lowest - {lowest["rate"]} Provider - {lowest["provider"]}')


if __name__ == '__main__':
    main()

输出:

BCH - Highest - 282.7334121 Provider - hitbtc <--> - Lowest - 280.98464349 Provider - exmo
BTC - Highest - 37692.36549 Provider - bitstamp <--> - Lowest - 37692.36549 Provider - bitstamp
DOGE - Highest - 0.13055346 Provider - gemini <--> - Lowest - 0.13055346 Provider - gemini
ZEC - Highest - 120.568875 Provider - bitfinex <--> - Lowest - 120.568875 Provider - bitfinex