Python 如何获得键值最低的词典

Python 如何获得键值最低的词典,python,dictionary,Python,Dictionary,这是我的字典模式 f = { 'client_id': {'client_name': [{'transaction_date': date_time, 'transaction_amount': value_in_dollar}] } } 如何获得交易金额最低的词典 输入示例: f = { 905220: {'Steven Jhon': [{'transaction_dat

这是我的字典模式

f = { 'client_id': {'client_name': [{'transaction_date': date_time,
                                     'transaction_amount': value_in_dollar}]
                   }
    }
如何获得交易金额最低的词典

输入示例:

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}]
               }     
    }

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

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)

到目前为止你试过什么?您当前的方法有什么困难?似乎最好将这些数据放在数据库中,因为从dict中按值检索数据效率很低。你能把它移到数据库吗?我们的用例是什么?@IanAuld数据已经在数据库中,我必须从数据库中提取客户信息,并将id提供给API以获取事务详细信息,然后我将这两组数据合并到字典中。