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

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

19.01.2022, 21:07. Показов 958. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru