2016-06-13 66 views
1

這是我的字典架構。如何獲得具有最低關鍵值的字典

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

你嘗試過什麼至今?你目前的方法遇到什麼困難? – idjaw

+0

似乎將數據存入數據庫似乎更好,因爲從字典中檢索數據的效率相當低。你能把它移到數據庫嗎?我們的用例是什麼? – IanAuld

+0

@IanAuld數據已經存在於數據庫中,我必須從數據庫中提取客戶端信息,並將該ID提供給API以獲取事務詳細信息,並將兩個集合組合在字典中。 – mongotop

回答

3

你可以使用一個大字典的理解,或輔助功能像這樣的:

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) 
相關問題