2012-04-24 11 views
2

나는 아래와 같은 사전을 가지고 있습니다.파이썬에서 - 중첩 된 사전에서 최대 날짜 찾기

'10000ag2'및 10000ag1 '키의 경우 어떤 키가 최대 날짜의 last_event를 갖는지 알아 보는 가장 효율적인 방법은 무엇입니까?

{'10000ag2': 
    {'last_view': datetime.datetime(2012, 4, 24, 8, 27, 30), 
    'last_event': datetime.datetime(2012, 4, 24, 8, 28, 30), 
    'last_prid': '300'}, 
'10000ag1': 
    {'last_view': datetime.datetime(2012, 4, 24, 8, 27, 30), 
    'last_event': datetime.datetime(2012, 4, 24, 8, 28, 30), 
    'last_prid': '300'}} 

예를 들어. 20 개의 최상위 키.

감사

답변

7
max(my_dict.items(), key=lambda x: x[1]['last_event'])[0] 
+0

영업 이익의 요청에 따라이 상위 20 개의 키를 찾을 수 없습니다. 아마도'reverse = True'를 사용하여'sorted '하고 20 개의 요소를 잘라냅니다. –

+0

나는 단지 20의 maximun을 원했지만 가장 효율적인 수단이었다. – Tampa

+0

상위 20 개를 O (n)에서 찾을 수 있습니다. 정렬은 O (n log n) 일 수 있으므로 이론상보다 효율적으로 수행 할 수 있지만 실제로는 dict이 중요 할 경우 큰 차이가 있어야합니다 –

관련 문제