Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 18

Перебор до определённого ключа

19.01.2022, 21:07. Показов 934. Ответов 3
Метки py (Все метки)

Студворк — интернет-сервис помощи студентам
помогите извлечь и объяснить работу со списком и словарём! Делаю запрос приходит ответ -
{'USDT_RUB': [{'trade_id': 351927301, 'date': 1642611270, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '75.753714', 'amount': '151.507428', 'order_id': 23247410949, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
{'trade_id': 351719285, 'date': 1642548870, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.063537', 'amount': '152.127074', 'order_id': 23218057502, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
{'trade_id': 351665803, 'date': 1642531531, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.132809', 'amount': '152.265618', 'order_id': 23209577756, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
{'trade_id': 351656246, 'date': 1642528597, 'type': 'sell', 'pair': 'USDT_RUB', 'quantity': '10.934', 'price': '76.094944', 'amount': '832.02211769', 'order_id': 23165468678, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '2.49606635', 'commission_currency': 'RUB', 'commission_percent': '0.3'},
{'trade_id': 351344377, 'date': 1642436134, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '74.636027', 'amount': '149.272054', 'order_id': 23165430907, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'}]}
как до sell вывести(и включая sell), в данном случае три (может и больше или меньше) типа buy, а потом из каждого вложенного вытаскивать значения ключей?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2022, 21:07
Ответы с готовыми решениями:

Сортировка словаря по значению определенного ключа
Подскажите, а как отсортировать список словарей l1 по значению ключа 'age'. Мне почему то словари тяжело заходят.Пожалуйста!!! Зарание...

Проверка наличия определённого ключа реестра и добавление этого ключа в реестр при его отсутствии
Добрый день! Пытаюсь разобраться с bat файлом, который будет запускаться при старте системы и проверять один ключ реестра. При отсутствии...

Перебор всех комбинаций 3-хзначного ключа
Приветствую дорогие форумчане! Помогите реализовать небольшую программку. Есть 3 вложенных цикла, которые реализую перебор всех...

3
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
19.01.2022, 21:36
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = {'USDT_RUB': [
    {'trade_id': 351927301, 'date': 1642611270, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '75.753714', 'amount': '151.507428', 'order_id': 23247410949, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351719285, 'date': 1642548870, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.063537', 'amount': '152.127074', 'order_id': 23218057502, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351665803, 'date': 1642531531, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.132809', 'amount': '152.265618', 'order_id': 23209577756, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351656246, 'date': 1642528597, 'type': 'sell', 'pair': 'USDT_RUB', 'quantity': '10.934', 'price': '76.094944', 'amount': '832.02211769', 'order_id': 23165468678, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '2.49606635', 'commission_currency': 'RUB', 'commission_percent': '0.3'},
    {'trade_id': 351344377, 'date': 1642436134, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '74.636027', 'amount': '149.272054', 'order_id': 23165430907, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'}
]}
 
# Идем циклом по всем элементам словаря, В данном случае он один. k - ключ ('USDT_RUB'), v - значение (список словарей).
for k, v in a.items():
    # идем циклом по элементам списка, elem - словарь списка.
    for elem in v:
        print(f"ID: {elem['trade_id']} Дата: {elem['date']} Order_ID: {elem['order_id']} Type: {elem['type']}")
        if elem['type'] == 'sell':
            break
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 18
19.01.2022, 22:01  [ТС]
а можно, он вывел четыре принта (три с buy) и один с sell переставил принт после иф вывел три buy, эти что c buy засунуть как то в переменную, что бы в дальнейшем (в данном примере три (но возможно и больше или меньше) значения buy) проссумировать quantity(бывает разной) и price(разный)? В дальнейшем высчитать среднюю цену.
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
19.01.2022, 22:10
Лучший ответ Сообщение было отмечено VenusS как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a = {'USDT_RUB': [
    {'trade_id': 351927301, 'date': 1642611270, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '75.753714', 'amount': '151.507428', 'order_id': 23247410949, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351719285, 'date': 1642548870, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.063537', 'amount': '152.127074', 'order_id': 23218057502, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351665803, 'date': 1642531531, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '76.132809', 'amount': '152.265618', 'order_id': 23209577756, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'},
    {'trade_id': 351656246, 'date': 1642528597, 'type': 'sell', 'pair': 'USDT_RUB', 'quantity': '10.934', 'price': '76.094944', 'amount': '832.02211769', 'order_id': 23165468678, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '2.49606635', 'commission_currency': 'RUB', 'commission_percent': '0.3'},
    {'trade_id': 351344377, 'date': 1642436134, 'type': 'buy', 'pair': 'USDT_RUB', 'quantity': '2', 'price': '74.636027', 'amount': '149.272054', 'order_id': 23165430907, 'client_id': 0, 'exec_type': 'maker', 'commission_amount': '0.006', 'commission_currency': 'USDT', 'commission_percent': '0.3'}
]}
 
res = []
quantity = 0
cost = 0
# Идем циклом по всем элементам словаря, В данном случае он один. k - ключ ('USDT_RUB'), v - значение (список словарей).
for k, v in a.items():
    # идем циклом по елементам списка каждого значения словаря (оно одно), elem - словарь.
    for elem in v:
        res.append(elem)
        quantity += float(elem['quantity'])
        cost += float(elem['quantity']) * float(elem['price'])
        if elem['type'] == 'sell':
            break
print(cost / quantity if quantity else 0)
# В переменной res отобранные
print(res)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2022, 22:10
Помогаю со студенческими работами здесь

Получить значение определенного ключа из JSON
Есть примерно такой массив: Как мне получить price где market_hash_name = AK-47 | Predator (Field-Tested)?

Перебор комбинаций слов из определенного списка
public static void main(String args) { allword = readlistfromFile("fool"); word2 = readlistfromFile("word5"); ...

Как в Ajax получить значение определенного ключа?
сейчас мне Ajax возвращает результат вот в таком виде {"org":"IK1","con":null,"reg_date":"2016-06-10...

Как отловить изменения определенного ключа в реестре?
Здравствуйте у меня к вам 1 вопрос как отловить изменения определенного ключа в реестре то есть если значение ключа изменилось то мне...

Перебор цифр в ячейке и запуск определенного макроса
На листе Тест1 в ячейках A1 и B1 стоят числа, от 1 до 30. Нужно, чтобы при запуске макроса, поочереди подставлялось число, сначала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru