Из нескольких таблиц я получаю значения формы: (Sector, Stock, InvestedValue) Я использую объект словаря python для вставки этих значений и во время вставки, если комбинация (сектор, запас) существует, добавьте InvestedValue к существующей записи, иначе добавить новую запись в словарь. После вставки всех данных, скажем, я получаю вложенный словарь, например:
stock_dict = {
"Financial": {"HDFC Bank": 230.25, "Axis Bank": 70.15, "ICICI Bank": 110.45},
"Automobile": {"Tata Motors": 135.67},
"Consumer Goods": {"Avenue Supermarket": 190.45, "Godrej Industries": 120.32}
}
Как распечатать этот вложенный словарь в отсортированном виде:
Получить комбинацию Sector, Company, InvestedValue, отсортированные на основе InvestedValue
Получить комбинацию Sector, sum (InvestedValue) ie. сумма InvestedValue каждой компании в этом секторе, снова отсортированная по сумме
Мой текущий подход к решению этих проблем заключается в сглаживании вложенного словаря в список кортежей и выполнении сортировки по нему. Например:
Для решения 1:
stock_list = []
for sector in stock_dict:
for stock in stock_dict[sector]:
stock_list.append((sector, stock, stock_dict[sector][stock]))
sorted_list = sorted(stock_list, key=lambda stock: stock[2], reverse=True)
Для решения 2:
sector_list = []
for sector in stock_dict:
sector_list.append((sector,sum(stock_dict[sector].values())))
sorted_sector_list = sorted(sector_list, key=lambda sector: sector[1], reverse=True)
ЕСТЬ ли лучший подход, т.е. сортировка непосредственно во вложенном словаре без необходимости добавить его в список?