【发布时间】:2020-09-17 05:06:25
【问题描述】:
我从多个表中获取以下形式的值:(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}
}
如何以排序方式打印此嵌套字典:
-
获取根据 InvestedValue 排序的 Sector、Company、InvestedValue 的组合
-
获取 Sector 和 sum(InvestedValue) 的组合,即。该行业中每家公司的 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)
是否有更好的方法,即直接在嵌套字典上排序而不必将其展平到列表中?
【问题讨论】:
标签: python sorting dictionary nested