2012-03-14 9 views
1

を使用して2つの辞書から値を比較することにより、辞書を作成します。辞書用のPython

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

dict1の日付が満たない場合、私は、どこ与えられたPKのために、dict1とdict2間の値を比較しようとしています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} 

(仮定DATE1は日付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()} 

それは "​​がないdict2またはそれが存在していて、dict1[k1] > dict2[k1]であるならば、datetime.now() - dict1[k1]を行うそうでない場合は、。 "と言う古いレコードの"。"

+0

ありがとう、素晴らしい作品です。私は自分のQに誤りがあったことを見ました。私はそれを修正しました(dict3は私のテキストと矛盾しています)。 dict2に値がない場合は、元のタイピングで示されていたように "old record"ではなくdatetime.now() - valueを返す必要があります(dict3では正しい)。あなたの答えを更新してください。私はそれを正しいものとしてマークします。 –

+0

回答を編集しました。 –