Potrzebowałem porównać 2 słowniki, aby znaleźć zestaw kluczy w jednym słowniku, który nie był w drugim.Zwięzły sposób na znalezienie "kluczowej" różnicy między 2 słownikami?
wiem, że Python ustawić obiekty wspierać:
set3=set1-set2
ale nie mogę zrobić:
dict3=dict1-dict2
czyli
missingKeys=dict1.keys()-dict2.keys()
(byłem trochę zaskoczony przez ostatni punkt, ponieważ w Javie klucze są obiektami Set.) Jedno rozwiązanie to:
missingKeys=set(dict1.keys())-set(dict2.keys())
jest lepszy lub bardziej zwięzły sposób na zrobienie tego?
myślę, że ostatnia linia jest dostatecznie zwięzły siebie, ale ... Chyba bardziej interesujące pytanie to "Jak usunąć wszystkie z w Y z X?" gdzie X i Y są listami. Byłoby użyteczne, gdyby na przykład duplikaty Z w X, które pojawiają się w Y, powinny zostać pozostawione same sobie. –
@pst: Cóż, trochę dziwnie jest tworzyć obiekty ustawione, tylko po to, aby wykorzystać funkcję difference() ... –
Z drugiej strony, ponieważ * jest * zestawem, może wykorzystać lepsze O ... różnice w wykazie za pomocą zrozumienia są łatwe, ale nieco bardziej rozwlekłe. Wciąż jednakowa wydajność, jeśli "sondowana" lista jest konwertowana na "zestaw". –