Niedawno napisałem jakiś kod, który wyglądał mniej więcej tak:Dlaczego warto korzystać z dict.keys?
# dct is a dictionary
if "key" in dct.keys():
Jednak później okazało, że mogę osiągnąć te same wyniki z:
if "key" in dct:
Odkrycie to dało mi do myślenia i zacząłem uruchom niektóre testy, aby sprawdzić, czy może istnieć scenariusz, gdy I musi użyć metody ze słownika w postaci keys
. Mój wniosek brzmi jednak nie, nie ma.
Jeśli chcę klucze w wykazie, co mogę zrobić:
keys_list = list(dct)
Jeśli chcę iteracyjne nad klucze, mogę zrobić:
for key in dct:
...
Wreszcie, jeśli chcę sprawdzić, czy klucz jest w dct
, mogę użyć in
, tak jak powyżej.
Podsumowując, moje pytanie brzmi: czy czegoś brakuje? Czy kiedykolwiek byłby scenariusz, w którym I musi użyć metody keys
? ... lub jest to po prostu metoda resztkowa z wcześniejszej instalacji Pythona, która powinna być zignorowana?
Jeśli funkcja 'dct.keys()' jest bardziej wydajna, podczas pobierania kluczy jako listy _wartość_. Teraz 'jeśli klucz w dct' działa, jednak za każdym razem wyszukiwanie wymagałoby dodatkowego przetwarzania. To jest optymalizacja. – karthikr
Jawny jest lepszy niż niejawny. –
@karthikr: w obu przypadkach 'for' tworzy obiekt iteratora (wartość zwracaną przez funkcję' iter() ', która daje wartości w sekwencji Oba przypadki zwracają klucze słownika, z tą różnicą, że używając' dict.keys() 'wymaga wyszukiwania atrybutu i wywołania funkcji * first *. W ten sposób jest mniej efektywny –