Как распечатать результат в порядке возрастания? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть следующий код, который печатает ключи и значения для ставок по займам и кредитам. Как я могу go упорядочить результаты в порядке возрастания наиболее эффективным образом? Я также имею дело с кортежами, и я действительно не хочу использовать кортежи в своем коде.

import time
import json
import requests
from natsort import natsorted
from tabulate import tabulate

def get_loanscan_rates():
    
    borrowing_rates = {}
    lending_rates = {}

    url = 'https://api.loanscan.io/v1/interest-rates'
    headers = {'accept': 'text/json',
               'x-api-key': 'dPBkTf4Z047mTOOjIVu7T7xG6BSr7K5M3x7knjzP'}
    data = requests.get(url, headers=headers).json()
    for d in data:
        for c in d['borrow']:
            if c['symbol'] == 'USD' or c['symbol'] == 'USDT' or c['symbol'] == 'BTC' or c['symbol'] == "ETH":
                new_key = c['symbol'] + '|' + d['provider']
                borrowing_rates.setdefault(new_key, [])
                borrowing_rates[new_key].append("{:.2%}".format(float(c['rate'])))
                borrowing_rates[new_key].append(d['provider'])

    for d in data:
        for c in d['supply']:
            if c['symbol'] == 'USD' or c['symbol'] == 'USDT' or c['symbol'] == 'BTC' or c['symbol'] == "ETH":
                new_key = c['symbol'] + '|' + d['provider']
                lending_rates.setdefault(new_key, [])
                lending_rates[new_key].append("{:.2%}".format(float(c['rate'])))
                lending_rates[new_key].append(d['provider'])

    for key in borrowing_rates.keys():
        borrowing_rates[key] = tuple(borrowing_rates[key])
    for key in lending_rates.keys():
        lending_rates[key] = tuple(lending_rates[key])

    headers = ["Asset", "Interest Rate", "Provider"]
    print(tabulate([(k,) + v for k, v in natsorted(borrowing_rates.items())], headers = headers))

    headers = ["Asset", "Interest Rate", "Provider"]
    print(tabulate([(k,) + v for k, v in natsorted(lending_rates.items())], headers = headers))



...