2012-03-14 5 views
1

을 사용하여 두 사전의 값을 비교하여 사전을 만들기 :사전 파이썬

dict1={pk1:date1, pk2:date2, pk3:date3, pk5:date5} 
dict2={pk1:date11, pk3:date13, pk6:date16} 

을 내가 dict1과 dict2 사이의 값을 비교하려고 경우 주어진 PK를 들어, dict1의 날짜보다 작은 경우 dict2it는 "이전 레코드"를 리턴합니다. 그렇지 않으면 dict1의 값이 dict2보다 최근 (또는 k : v 쌍이 dict2에서 누락 된 경우)이면 dict1에서 datetime.now() - value를 리턴합니다.

그래서 결과 사전은 다음과 같이 보일 수 있습니다 :

dict3={pk1: datetime.now()-date1, pk2: datetime.now()-date2, pk3: "old record", pk5: datetime.now()-date5} 

(가정 날짜 1이 날짜 11보다 최신 및 date3는 date13보다 최신.)

Comparing two dictionaries in Python 좋은 출발점이 될 것 같다 그러나 나는 상황을 편집하기 위해 모든 일이 진행되고 있다는 것을 이해하지 못합니다.

답변

4

당신은 이해 사전을 수는 :

{k1:datetime.now() - v1 if (k1 not in dict2 or v1 > dict2[k1]) 
         else 'Old record' 
for k1,v1 in dict1.iteritems()} 

는 "k1하지 dict2에서, 또는이 존재하고 dict1[k1] > dict2[k1] 경우 다음 datetime.now() - dict1[k1]을 그렇지."라는 오래된 기록 "."

+0

감사합니다. 훌륭한 작품입니다. 나는 내 질문에 오류가 있다는 것을 알았다. 나는 그것을 고쳤다. dict2에 값이 없으면 원래의 입력에 표시된 것처럼 "Old record"대신 datetime.now() - value를 반환해야합니다 (그러나 dict3에서는 올바름). 답변을 업데이트하십시오. 올바른 것으로 표시해 드리겠습니다. –

+0

답변을 편집했습니다. –