dict. setdefault()
Zwraca wartość klucza, a gdy go brakuje, najpierw zapisuje w słowniku wartość domyślną.
- Zwraca
- Wartość klucza po wywołaniu: dotychczasową albo właśnie wstawioną.
- Zmienia oryginał
- Tak
Przykład
#settings = {"theme": "dark"}
print(settings.setdefault("theme", "light"))
print(settings.setdefault("lang", "pl"))
print(settings)Definicja i zastosowanie
#Metoda setdefault(klucz, domyslna) działa jak get() z jedną różnicą: jeśli klucza nie ma, wstawia go do słownika z wartością domyślną i dopiero wtedy ją zwraca. Gdy klucz istnieje, zwraca jego wartość i niczego nie zmienia.
Najczęściej używa się jej do grupowania danych. Zapis groups.setdefault(key, []).append(item) przy pierwszym wystąpieniu klucza tworzy pustą listę, a przy kolejnych dopisuje do już istniejącej. Wszystko mieści się w jednej linii.
Wartość domyślna powstaje przy każdym wywołaniu, nawet jeśli klucz istnieje. Przy intensywnym grupowaniu czytelniejszy i szybszy bywa collections.defaultdict, który tworzy wartości tylko wtedy, gdy są potrzebne.
Składnia
#slownik.setdefault(key, default=None)Parametry
#key
klucz słownika
Klucz do odczytania lub dodania.default
opcjonalny, domyślnie None
Wartość wstawiana, gdy klucza brakuje.
Więcej przykładów
#topics = [
("HTML", "znaczniki"),
("CSS", "flexbox"),
("HTML", "formularze"),
("CSS", "grid"),
]
by_course = {}
for course, topic in topics:
by_course.setdefault(course, []).append(topic)
print(by_course)Dobre praktyki
#- Do grupowania wielu elementów rozważ
defaultdict(list). Kod jest krótszy, a pusta lista nie powstaje przy każdym wywołaniu. - Jeśli chcesz tylko odczytać wartość z wartością zastępczą, bez zapisywania jej w słowniku, użyj
get().
Powiązane hasła
#- dict.get()Zwraca wartość dla klucza albo wartość domyślną, gdy klucza nie ma w słowniku.
- collections.defaultdictSłownik, który dla brakującego klucza sam tworzy wartość domyślną, np. pustą listę lub zero.
- dict.update()Dopisuje do słownika pary z innego słownika lub argumentów, nadpisując istniejące klucze.
- list.append()Dodaje jeden element na koniec listy.
Widzisz błąd albo brakuje przykładu? Napisz do nas.