Python: przypisanie wartości w słowniku a metoda setdefault

6-maj-2019

Popatrz – wynik obu skryptów jest taki sam:

country_leader = { 'DE' : 'Merkel' , 'PL' : 'Szydlo'}
country_leader['FR'] = 'Macron'
print(country_leader)
country_leader = { 'DE' : 'Merkel' , 'PL' : 'Szydlo'}
country_leader.setdefault('FR','Macron')
print(country_leader)

dlaczego? Bo 'FR’ na oryginalnej liście nie było.  Zarówno przypisanie, jak i setdefault dodaje nowy kraj z jego leaderem.

Ale w następnym przykładzie jest inaczej. Tutaj zmieniamy Szydło na Morawiecki dla PL. Zapis dla PL już był i to polecenie dokonało zmian – Szydło zamienia się na Morawiecki:

country_leader = { 'DE' : 'Merkel' , 'PL' : 'Szydlo'}
country_leader['PL'] = 'Morawiecki'
print(country_leader)

ale tutaj instruujemy Pythona, że należy dodać zapis PL jeśli go tam nie ma i zainicjować go 'Morawiecki’

country_leader = { 'DE' : 'Merkel' , 'PL' : 'Szydlo'}
country_leader.setdefault('PL', 'Morawiecki')
print(country_leader)

Sęk w tym, że PL było na oryginalnej liście, więc nie dodaliśmy PL i nie wpisaliśmy 'Morawiecki’. Została Szydło.

Kiedy używać setdefault?

Korzystanie z setdefault jest best practice zamiast takiego kodu, który osobno sprawdza, czy PL jest na liście i jeśli nie, to dodaje taki zapis. setdefault pozwala to zrobić w jednym kroku!

country_leader = { 'DE' : 'Merkel' , 'PL' : 'Szydlo'}
if 'PL' not in country_leader:
    country_leader['PL'] = 'Morawiecki'
print(country_leader)

Komentarze są wyłączone

Autor: Rafał Kraik