Python числовые операции над словарями с кортежными строками и целыми числами - PullRequest
0 голосов
/ 08 марта 2020

Первый вопрос здесь, я немного знаком с Python структурами данных.

После заказов опционов на акции мне предоставляют эти два словаря (пример):

price = {('GOOGL', 0): 45.75, ('GOOGL', 1): 45.57, ('TSLA', 0): 39.41, ('TSLA', 1): 39.31, ('TSLA', 2): 39.55, ('TSLA', 3): 39.39}
quantity = {('GOOGL', 0): 2.0, ('GOOGL', 1): 1.0, ('TSLA', 0): 1.0, ('TSLA', 1): 1.0, ('TSLA', 2): 4.0, ('TSLA', 3): 2.0}

Первый - это цены для каждого выполнения, а второй - количества для каждого выполнения.

Не могу найти способ получить доступ к ценам и количествам с помощью ключей кортежей, и я хотел бы рассчитать среднюю цену каждого вариант для получения структуры, к которой я могу получить доступ, например, вот так:

average_price = {'GOOGL': 45.69, 'TSLA': 39.46}

Какими будут шаги?

Спасибо!

Q

1 Ответ

0 голосов
/ 09 марта 2020

Этот рабочий код покажет вам, как обрабатывать словарь цен:

price = {('GOOGL', 0): 45.75,
         ('GOOGL', 1): 45.57,
         ('TSLA', 0): 39.41,
         ('TSLA', 1): 39.31,
         ('TSLA', 2): 39.55,
         ('TSLA', 3): 39.39}

sum_dict = {}
avg_dict = {}

# Populate sum_dict with price sums, count, and calc avgs per ticker
for price_key, price_value in price.items():
    ticker = price_key[0]
    if not ticker in sum_dict.keys():
        sum_dict[ticker] = [0.0, 0, 0.0]
    sum_dict[ticker][0] += price_value
    sum_dict[ticker][1] += 1
    sum_dict[ticker][2] = sum_dict[ticker][0] / sum_dict[ticker][1]

# Tranfer avg data to avg_dict
for sum_key in sum_dict.keys():
    avg_dict[sum_key] = sum_dict[sum_key][2]
print('Per Ticker Price Avgs:', avg_dict)

Если вам нужна дополнительная помощь при завершении обработки словаря количеств, то дайте мне знать, но метод примерно такой же.

...