Reklama

Słownik python to struktura danych podobna do tablicy asocjacyjnej występującej w innych językach programowania. Tablica lub lista indeksuje elementy według pozycji. Z kolei słownik indeksuje elementy według Klucze które mogą być łańcuchami. Pomyśl o słowniku jako nieuporządkowanym zestawie kluczowa wartość pary.

pary klucz-wartość słownika python

W tym artykule przedstawiamy pracę ze słownikiem python.

Tworzenie słownika

Istnieje kilka sposobów tworzenia słownika python. Najprostszy wykorzystuje inicjalizację nawiasu klamrowego ze składnią przypomina JSON Jak uzyskać komunikację w Pythonie i JavaScript za pomocą JSONDzisiaj pokażę ci, jak używać JSON do wysyłania danych z JavaScript do Pythona. Omówię konfigurację serwera WWW wraz z całym potrzebnym kodem. Czytaj więcej .

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}

Możesz także używać liczb jako kluczy. Uważaj jednak, używając liczb zmiennoprzecinkowych jako kluczy, ponieważ komputer przechowuje je jako przybliżenia Wszystko, co musisz wiedzieć o pamięci RAM i zarządzaniu pamięcią

RAM to pamięć krótkotrwała twojego komputera. Dlatego zarządzanie pamięcią ma znaczący wpływ na wydajność systemu. Tutaj wyjaśniamy, jak działa pamięć RAM i czy możesz zrobić coś, aby zwiększyć jej wydajność. Czytaj więcej .

rain_percent = {1980: „17%”, 1981: „15%”, 1982: „10%”} wydrukuj deszcz. drukuj rain_percent [1980] # wydruków. {1980: '17%', 1981: '15%', 1982: '10%'} 17%

Określanie par klucz-wartość

Możesz także utworzyć i zainicjować słownik, używając par wartości nazwa jako argumentów słów kluczowych do dict () konstruktor.

populacja = dyktando (Kalifornia = 37253956, Kolorado = 5029196, Connecticut = 3574097, Delaware = 897934) populacja drukowana. # wydruków. {„Connecticut”: 3574097, „Delaware”: 897934, „California”: 37253956, „Colorado”: ​​5029196}

Tablica krotek klucz-wartość

Jeszcze innym sposobem tworzenia słownika jest użycie tablicy krotek klucz-wartość. Oto ten sam przykład jak powyżej.

pary = [(„California”, 37253956), („Colorado”, 5029196), („Connecticut”, 3574097), („Delaware”, 897934)] populacja = dyktando (pary) populacja drukowana. # wydruków. {„Connecticut”: 3574097, „Delaware”: 897934, „California”: 37253956, „Colorado”: ​​5029196}

Rozumiem

Zrozumienie nagrania zapewnia fajną składnię do zainicjowania nagrania, jeśli można obliczyć wartości na podstawie kluczy. Poniżej zainicjowano dykt liczb i wartości kwadratowych dla zakresu liczb.

print {x: x ** 2 dla x w xrange (10, 20)} # wydruków. {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}

Jak to działa? Ta ostatnia część (dla x w xrange (10, 20)) zwraca zakres liczb z określonego zakresu. Część ze zrozumieniem dykta ({x: x ** 2 ..}) zapętla ten zakres i inicjuje słownik.

Praca ze słownikiem Python

Co możesz zrobić ze słownikami po ich utworzeniu? Możesz uzyskać dostęp do elementów, aktualizować wartości, usuwać elementy itp.

Dostęp do elementów słownika Python

Uzyskaj dostęp do elementu nagrania za pomocą klucza w nawiasach, tak jak ty tablica lub lista Jak działają tablice i listy w PythonieTablice i listy są jednymi z najbardziej przydatnych struktur danych w programowaniu - chociaż niewiele osób wykorzystuje je w pełni. Czytaj więcej .

drukuj populację [„Delaware”] # wydruków. 897934.

Jeśli klucz jest liczbą, nie potrzebujesz cytatów. Wyrażenie wygląda wtedy jak indeksowanie listy lub tablicy.

drukuj rain_percent [1980] # wydruków. 17%

Typ klucza podczas uzyskiwania dostępu musi być zgodny z tym, co jest zapisane w słowniku Pythona. Następujące powoduje błąd, ponieważ przechowywane klucze to cyfry, a klucz dostępu to ciąg znaków.

x = „1980” print rain_percent [x] # wyników w 1 x = „1980” > 2 print rain_percent [x] KeyError: '1980'

Dostęp do nieistniejącego klucza jest błędem.

rain_percent = {1980: „17%”, 1981: „15%”, 1982: „10%”} print rain_percent [1983] # drukuje 1 rain_percent = {1980: „17%”, 1981: „15%”, 1982: „10%”} > 2 print rain_percent [1983] KeyError: 1983.

Aby uzyskać dostęp do klucza i podać wartość domyślną, jeśli mapowanie nie istnieje, użyj otrzymać() Metoda z wartością domyślną jako drugim argumentem.

print rain_percent.get (1985, „0%”) # wydruków. 0%

Sprawdzanie istnienia

Co jeśli chcesz sprawdzić obecność klucza bez faktycznej próby uzyskania do niego dostępu (i prawdopodobnie napotkania KeyError jak wyżej)? Możesz użyć w słowo kluczowe w formularzu klucz w dct która zwraca wartość logiczną.

drukuj 1980 w deszczu. wydrukuj „1980” w rain_percent. # wydruków. Prawdziwe. Fałszywe. 

Odwróć warunek (tj. Upewnij się, że klucz nie występuje w słowniku Pythona), używając formularza klucz nie w dct. Jest to równoważne ze standardową negacją python nie wpisuj w dct.

drukuj 1980 nie w deszczu. drukuj 1985 nie w deszczu. # wydruków. Fałszywe. Prawdziwe. 

Modyfikowanie elementów

Zmień wartość, przypisując do wymaganego klucza.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users [„wiek”] = 29. drukuj użytkowników. # wydruków. {„nazwisko”: „Smith", „wiek": 29, „imię": „John”}

Użyj tej samej składni, aby dodać nowe mapowanie do słownika Python.

users ['dob'] = '15 -sep-1971 ' drukuj użytkowników. # wydruków. {„dob”: „15 -sep-1971”, „nazwisko”: „Smith”, „wiek”: 29, „imię”: „John”}

Zaktualizuj wiele elementów słownika w jednym ujęciu za pomocą aktualizacja() metoda.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.update ({„wiek”: 29, „dob”: „15 -sep-1971”}) drukuj użytkowników. # wydruków. {„dob”: „15 -sep-1971”, „nazwisko”: „Smith”, „wiek”: 29, „imię”: „John”}

Ustaw wartość domyślną dla klucza za pomocą setdefault (). Ta metoda ustawia wartość klucza, jeśli mapowanie nie istnieje. Zwraca bieżącą wartość.

# nie zmienia bieżącej wartości. print users.setdefault („imię”, „Jane”) # wydruków. John # ustawia wartość. print users.setdefault („miasto”, „NY”) # wydruków. NY # Wartość końcowa. drukuj użytkowników. # wydruków. {„nazwisko”: „Smith", „wiek": 27, „imię": „John”, „miasto": „NY"}

Usuwanie elementów

Usuń odwzorowania ze słownika za pomocą del operator. Ten operator nic nie zwraca.

Spotkasz KeyError jeśli klucz nie istnieje w słowniku.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} del users [„wiek”] drukuj użytkowników. # wydruków. {„lastname”: „Smith”, „firstname”: „John”}

Użyj Muzyka pop() zamiast tego, gdy chcesz odzyskać usuniętą wartość.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} print users.pop („wiek”) drukuj użytkowników. # wydruków. 27. {„lastname”: „Smith”, „firstname”: „John”}

Co zrobić, jeśli chcesz usunąć klucz, jeśli istnieje, bez powodowania błędu, jeśli nie istnieje? Możesz użyć Muzyka pop() i określ Żaden dla drugiego argumentu, jak następuje:

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.pop („foo”, Brak) drukuj użytkowników. # wydruków. {„nazwisko”: „Smith", „wiek": 27, „imię": „John”}

A tutaj jest jedno-liniowy program do usuwania wiązki kluczy ze słownika bez powodowania błędu w nieistniejących kluczach.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15 -sep-1971 '} mapa (lambda x: users.pop (x, Brak), [„wiek”, „foo”, „dob”]) drukuj użytkowników.

Chcesz usunąć wszystkie klucze ze słownika? Użyj jasny() metoda.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.clear () drukuj użytkowników. # wydruków. {}

Pętla ze słownikami Python

Python zapewnia wiele metody zapętlania Jak działają pętle „do-while” w programowaniu komputerowymPętle są jednym z pierwszych rodzajów sterowania, których nauczysz się podczas programowania. Prawdopodobnie wiesz o pętlach while i for, ale co osiąga pętla do-while? Czytaj więcej nad wpisami słownika. Wybierz jeden, który odpowiada Twoim potrzebom.

Pętla nad klawiszami

  • Najprostsza metoda sekwencyjnego przetwarzania kluczy (i ewentualnie wartości) wykorzystuje pętlę postaci:
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla kw użytkownikach: drukuj k, '=>', użytkownicy [k] # wydruków. nazwisko => Smith. wiek => 27. imię => John.
  • Przy użyciu metody iterkeys () działa dokładnie tak samo jak powyżej. Wybierz, którego formularza chcesz użyć.
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla k w users.iterkeys (): print k, '=>', users [k] # wydruków. nazwisko => Smith. wiek => 27. imię => John.
  • Trzecia metoda pobierania i przetwarzania kluczy w pętli polega na użyciu wbudowanej funkcji iter ().
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla k in iter (users): print k, '=>', users [k] # wydruków. nazwisko => Smith. wiek => 27. imię => John.
  • Jeśli potrzebujesz indeksu przetwarzanego klucza, użyj wyliczać() wbudowana funkcja, jak pokazano.
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla indeksu, wprowadź wyliczenie (użytkownicy): wydrukuj indeks, klucz, „=>”, użytkownicy [k] # wydruków. 0 nazwisko => John. 1 wiek => John. 2 imię => John.

Pętla nad parami klucz-wartość

  • Jeśli chcesz pobrać każdą parę klucz-wartość za jednym razem, użyj iteritems ().
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla k, v w users.iteritems (): print k, '=>', v. # wydruków. nazwisko => Smith. wiek => 27. imię => John.

Iterating Over Values

  • Metoda itervalues ​​() można użyć do iteracji wszystkich wartości w słowniku. Chociaż ta metoda wygląda podobnie do pętli wartości (), jest bardziej wydajny, ponieważ nie wyodrębnia wszystkich wartości naraz.
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla wartości w users.itervalues ​​(): drukuj wartość. # wydruków. Kowal. 27. Jan.

Wyodrębnianie tablic

Poniższe metody opisują wyodrębnianie różnych informacji ze słownika Python w postaci tablicowej. Powstała tablica może być zapętlona przy użyciu normalnych konstrukcji Pythona. Należy jednak pamiętać, że zwracana tablica może być duża w zależności od wielkości słownika. Więc może być więcej drogi (pod względem pamięci) do przetwarzania tych tablic niż przy użyciu powyższych metod iteratora.

Jednym z przypadków, w którym akceptowalna jest praca z tymi tablicami, jest konieczność usunięcia elementów ze słownika, gdy napotkasz niepożądane elementy. Praca z iteratorem podczas modyfikowania słownika może spowodować błąd RuntimeError.

  • Metoda przedmiotów() zwraca tablicę krotek klucz-wartość. Możesz iterować te pary klucz-wartość, jak pokazano:
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} dla k, v w users.items (): print k, '=>', v. # wydruków. nazwisko => Smith. wiek => 27. imię => John.
  • Pobierz wszystkie klucze w słowniku przy użyciu metody Klucze().
    users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} print users.keys () # wydruków. [„nazwisko”, „wiek”, „imię”]

    Użyj zwróconej tablicy, aby przeglądać klucze.

    dla k w users.keys (): print k, '=>', users [k] # wydruków. nazwisko => Smith. wiek => 27. imię => John.
  • W podobny sposób użyj metody wartości () aby pobrać wszystkie wartości ze słownika.
    dla wartości w users.values ​​(): drukuj wartość. # wydruków. Kowal. 27. Jan. 

Jak korzystasz ze słowników Python?

W tym artykule próbowaliśmy opisać najczęstsze przypadki użycia słowników python. Sprawdź wszystkie nasze inne artykuły w języku Python 10 podstawowych przykładów Python, które pomogą Ci szybko się uczyćTen artykuł o podstawowych przykładach Python jest przeznaczony dla tych, którzy mają już pewne doświadczenie w programowaniu i po prostu chcą jak najszybciej przejść do Pythona. Czytaj więcej nawet więcej wskazówek w Pythonie 5 kursów, które zabiorą Cię od Python Beginner do ProTe pięć kursów nauczy Cię wszystkiego o programowaniu w Pythonie, jednym z najgorętszych obecnie języków. Czytaj więcej . Jeśli masz inne przypadki użycia, które Twoim zdaniem powinny zostać uwzględnione, daj nam znać w komentarzach poniżej!

Kredyty obrazkowe: viper345 / Shutterstock