Słownik Pythona: jak go używać do pisania lepszego kodu

Słownik Pythona: jak go używać do pisania lepszego kodu

Słownik Pythona to struktura danych podobna do tablicy asocjacyjnej występującej w innych językach programowania. Tablica lub lista indeksuje elementy według pozycji. Z drugiej strony słownik indeksuje elementy według Klucze które mogą być ciągami. Pomyśl o słowniku jako nieuporządkowanych zestawach kluczowa wartość pary.





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





Tworzenie słownika

Istnieje kilka sposobów tworzenia słownika Pythona. Najprostszy używa inicjalizacji nawiasów klamrowych ze składnią przypominającą JSON .





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

Możesz również używać cyfr jako klawiszy. Uważaj jednak, używając liczb zmiennoprzecinkowych jako kluczy, ponieważ komputer przechowuje je jako przybliżenia .

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{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 nazwa-wartość jako argumentów słów kluczowych do dyktować () budowniczy.



Windows 10 nie może kliknąć paska zadań
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'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, co powyżej.

pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]
population = dict(pairs)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Dict ze zrozumieniem

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





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

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

Praca ze słownikiem Pythona

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





Dostęp do elementów słownika Pythona

Uzyskaj dostęp do elementu dyktanda za pomocą klawisza w nawiasach, tak jak chcesz tablica lub lista .

print(population['Delaware'])
# prints
897934

Jeśli kluczem jest liczba, cudzysłowy nie są potrzebne. Wyrażenie wtedy wygląda jak indeksowanie listy lub tablicy.

print(rain_percent[1980])
# prints
17%

Typ klucza podczas uzyskiwania do niego dostępu musi odpowiadać temu, co jest przechowywane w słowniku Pythona. Poniższe powoduje błąd, ponieważ przechowywane klucze są liczbami, podczas gdy klucz dostępu jest ciągiem.

x = '1980'
print(rain_percent[x])
# results in
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])
# prints
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 dostwać() metoda z wartością domyślną jako drugi argument.

naucz się grać na gitarze bez aplikacji
print(rain_percent.get(1985, '0%'))
# prints
0%

Sprawdzanie istnienia

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

print(1980 in rain_percent)
print('1980' in rain_percent)
# prints
True
False

Odwróć warunek (tzn. upewnij się, że klucz nie występuje w słowniku Pythona) za pomocą formularza klucz nie w dct . Odpowiada to standardowej negacji Pythona nie wpisuj dct .

print(1980 not in rain_percent)
print(1985 not in rain_percent)
# prints
False
True

Modyfikowanie elementów

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

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users['age'] = 29
print(users)
# prints
{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

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

users['dob'] = '15-sep-1971'
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Zaktualizuj wiele elementów słownika w jednym ujęciu, używając aktualizacja() metoda.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.update({'age': 29, 'dob': '15-sep-1971'})
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

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

# does not change current value
print(users.setdefault('firstname', 'Jane'))
# prints
John
# sets value
print(users.setdefault('city', 'NY'))
# prints
NY
# Final value
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}

Usuwanie elementów

Usuń mapowania ze słownika za pomocą z operator. Ten operator niczego nie zwraca.

Spotkasz Błąd klucza jeśli klucz nie istnieje w słowniku.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
del users['age']
print(users)
# prints
{'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('age'))
print(users)
# prints
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 sprecyzuj Nic dla drugiego argumentu w następujący sposób:

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.pop('foo', None)
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}

A oto jedna linijka, która usuwa kilka kluczy ze słownika bez powodowania błędu na nieistniejących kluczach.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}
map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])
print(users)

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

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.clear()
print(users)
# prints
{}

Zapętlanie ze słownikami Pythona

Python udostępnia wiele metod pętli nad wpisami słownika. Wybierz taki, który odpowiada Twoim potrzebom.

Zapętlanie klawiszy

  • Najprostszą metodą przetwarzania kluczy (i ewentualnie wartości) w sekwencji jest pętla w postaci: |_+_|
  • Korzystanie z metody iterkeys() działa dokładnie tak samo jak powyżej. Wybierz formularz, z którego chcesz skorzystać. |_+_|
  • Trzecia metoda pobierania i przetwarzania kluczy w pętli polega na użyciu wbudowanej funkcji iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Gdy potrzebujesz indeksu przetwarzanego klucza, użyj wyliczyć () wbudowana funkcja, jak pokazano. |_+_|

Zapętlanie par klucz-wartość

  • Jeśli chcesz pobrać każdą parę klucz-wartość za pomocą jednego wywołania, użyj iteritems() . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iteracja ponad wartościami

  • Metoda iterwartości() może służyć do iteracji po wszystkich wartościach w słowniku. Chociaż ta metoda wygląda podobnie do pętli przy użyciu wartości() , jest bardziej wydajny, ponieważ nie wyodrębnia wszystkich wartości naraz. |_+_|

Wyodrębnianie tablic

Poniższe metody opisują wyodrębnianie różnych informacji ze słownika Pythona w postaci tablicy. Otrzymaną tablicę można zapętlić przy użyciu normalnych konstrukcji Pythona. Należy jednak pamiętać, że zwracana tablica może być duża w zależności od rozmiaru słownika. Więc może być więcej drogie (pamięciowe) przetwarzać te tablice niż przy użyciu powyższych metod iteratorów.

Jednym z przypadków, w których praca z tymi tablicami jest akceptowalna, jest sytuacja, w której musisz usunąć elementy ze słownika, gdy napotkasz niepożądane elementy. Praca z iteratorem podczas modyfikowania słownika może spowodować wystąpienie RuntimeError.

  • Metoda rzeczy() zwraca tablicę krotek klucz-wartość. Możesz iterować po tych parach klucz-wartość, jak pokazano: |_+_|
  • Pobierz wszystkie klucze ze słownika za pomocą metody Klucze() . |_+_| Użyj zwróconej tablicy, aby zapętlić klucze. |_+_|
  • W podobny sposób użyj metody wartości() aby pobrać wszystkie wartości ze słownika. |_+_|

Jak korzystać ze słowników Pythona?

W tym artykule staraliśmy się omówić najczęstsze przypadki użycia słowników Pythona. Koniecznie sprawdź wszystkie nasze inne artykuły o Pythonie aby uzyskać jeszcze więcej porad dotyczących Pythona . Jeśli masz inne przypadki użycia, które Twoim zdaniem powinny zostać uwzględnione, daj nam znać w komentarzach poniżej!

słuchawki douszne bluetooth z najdłuższą żywotnością baterii

Kredyty obrazkowe: viper345/Shutterstock

Udział Udział Ćwierkać E-mail Jak uzyskać dostęp do wbudowanej poziomicy Google na Androidzie?

Jeśli kiedykolwiek musiałeś upewnić się, że coś jest wypoziomowane w mgnieniu oka, możesz teraz uzyskać poziomicę w telefonie w kilka sekund.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Pyton
O autorze Jay Śridhar(17 opublikowanych artykułów) Więcej od Jaya Sridhar

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować