繁体   English   中英

如何获得具有最低键值的字典

[英]How to get a dictionary with the lowest key value

这是我的字典架构。

f = { 'client_id': {'client_name': [{'transaction_date': date_time,
                                     'transaction_amount': value_in_dollar}]
                   }
    }

如何获取具有最低transaction_amount的字典。

输入示例:

f = { 905220: {'Steven Jhon': [{'transaction_date': '2016-05-07 00:00:00+00',
                              'transaction_amount': 1198},
                             {'transaction_date': '2016-05-08 00:00:00+00',
                              'transaction_amount': 4889}]
              },
      905221: {'Chris Chris': [{'transaction_date': '2016-05-01 00:00:00+00',
                                  'transaction_amount': 50},
                                 {'transaction_date': '2016-05-02 00:00:00+00',
                                  'transaction_amount': 100},
                                 {'transaction_date': '2016-05-03 00:00:00+00',
                                  'transaction_amount': 10}]
               }     
    }

期望的输出:

f = { 905220: {'Steven Jhon': [{'transaction_date': '2016-05-07 00:00:00+00',
                              'transaction_amount': 1198}]
              },
      905221: {'Chris Chris': [{'transaction_date': '2016-05-03 00:00:00+00',
                                  'transaction_amount': 10}]
               }     
    }

你可以使用一个大的字典理解,或像这样的辅助函数:

def get_min_by_value(x):
  if isinstance(x, dict):
    return {k: get_min_by_value(v) for k, v in x.items()}
  elif isinstance(x, list):
    return [min(x, key=lambda d: d['transaction_amount'])]

out = get_min_by_value(f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM