W przypadku słowników:
dict1={pk1:date1, pk2:date2, pk3:date3, pk5:date5}
dict2={pk1:date11, pk3:date13, pk6:date16}
Próbuję porównać wartości między dict1i dict2, gdzie dla danego pk, jeśli data w dict1 jest mniejsza niż dict2it, zwróci "stary rekord". Jeśli wartość w dict1 jest nowsza niż dict2 (lub para k: v nie występuje w dict2), zwraca wartość datetime.now () - wartość z dict1.
Wynikowy słownik może wyglądać tak:
dict3={pk1: datetime.now()-date1, pk2: datetime.now()-date2, pk3: "old record", pk5: datetime.now()-date5}
(zakładając, że data1 jest bardziej aktualna niż data 11, a data3 jest nowsza niż data 13).
Porównanie dwóch słowników w Pythonie wydaje się być dobrym punktem wyjścia, ale nie bardzo rozumiem, co się tam dzieje, aby edytować to w mojej sytuacji.
Odpowiedzi:
4 dla odpowiedzi № 1Możesz zrozumieć słownik:
{k1:datetime.now() - v1 if (k1 not in dict2 or v1 > dict2[k1])
else "Old record"
for k1,v1 in dict1.iteritems()}
Mówi "jeśli k1
jest nie w dict2
, lub istnieje i dict1[k1] > dict2[k1]
następnie zrób datetime.now() - dict1[k1]
. W przeciwnym razie "stary rekord". "