如何对Python嵌套字典按count或tradeAmount等value字段排序
实现Python嵌套字典按指定字段排序
前置说明
- Python 3.7及以上版本原生字典默认保留插入顺序,排序后直接转为
dict即可 - 3.6及更低版本需要使用
collections.OrderedDict存储排序结果,才能保证顺序符合预期
你给出的预期结果是按嵌套值的count字段降序排列实现的,具体代码如下:
完整实现代码
# 原始字典定义 original_dict = { 'KRW-SOL': {'count': 3, 'tradeAmount': 437540}, 'KRW-LOOM': {'count': 78, 'tradeAmount': 21030768}, 'KRW-ONT': {'count': 14, 'tradeAmount': 947009}, 'KRW-FCT2': {'count': 1, 'tradeAmount': 491935}, 'KRW-DKA': {'count': 30, 'tradeAmount': 12053758} } # 按count字段降序排序,得到的结果和你给出的预期完全一致 sorted_by_count = dict(sorted( original_dict.items(), key=lambda item: item[1]['count'], # 指定排序字段为嵌套的count值 reverse=True # True为降序,False为升序 )) # 如果需要按tradeAmount字段排序,仅需要修改key里的字段名即可 sorted_by_amount = dict(sorted( original_dict.items(), key=lambda item: item[1]['tradeAmount'], reverse=True )) # Python 3.6及更低版本写法,替换dict为OrderedDict即可 from collections import OrderedDict sorted_by_count_low_version = OrderedDict(sorted( original_dict.items(), key=lambda item: item[1]['count'], reverse=True ))
输出验证
打印sort_by_count得到的结果和你给出的预期完全一致:
{'KRW-LOOM': {'count': 78, 'tradeAmount': 21030768}, 'KRW-DKA': {'count': 30, 'tradeAmount': 12053758}, 'KRW-ONT': {'count': 14, 'tradeAmount': 947009}, 'KRW-SOL': {'count': 3, 'tradeAmount': 437540}, 'KRW-FCT2': {'count': 1, 'tradeAmount': 491935}}
内容的提问来源于stack exchange,提问作者realmasse
相关产品推荐
相关产品推荐

