Как сделать вывод по убыванию
Пишу телеграмм бота и возникла проблема:
У меня есть json файл в котором храниться информация
{"1634031414": {"SHC": "100000", "Price": 10000000}, "1634036422": {"SHC": "2", "Price": 2000}, "1243402562": {"SHC": "1112", "Price": 205500}}
Мне нужно сделать так, что-бы вывод в чате был примерно такой и в 1-ом сообщении:
- 1634031414 - SHC 100000 | Price 10000000
- 1243402562 - SHC 1112 | Price 205500
- 1634036422 - SHC 2 | Price 2000
(оформление вывода не важно, это просто пример)
Что бы я не пробовал, ничего не получалось(высвечивалась ошибка), либо выводились просто json строка в таком виде, в каком она и была изначально.
Ответы (1 шт):
Следующий пример спарсит JSON в Python-объект и отсортирует все поля в порядке убывания цены, то есть, поля Price.
import json
json_data = '{"1634031414": {"SHC": "100000", "Price": 10000000}, "1634036422": {"SHC": "2", "Price": 2000}, "1243402562": {"SHC": "1112", "Price": 205500}}'
data = json.loads(json_data)
sorted_data = sorted(data.items(), key=lambda x: x[1]['Price'], reverse=True)
print(sorted_data)
Вывод:
[('1634031414', {'SHC': '100000', 'Price': 10000000}), ('1243402562', {'SHC': '1112', 'Price': 205500}), ('1634036422', {'SHC': '2', 'Price': 2000})]
Если же нужно вывести в формате как в Вашем примере, то пройдёмся в цикле и зададим нужный вид:
for i, row in enumerate(sorted_data):
print(f'{i}. {row[0]} - SHC {row[1]["SHC"]} | Price {row[1]["Price"]}')
Вывод:
0. 1634031414 - SHC 100000 | Price 10000000
1. 1243402562 - SHC 1112 | Price 205500
2. 1634036422 - SHC 2 | Price 2000