Slovník Pythonu: Ako ho môžete použiť na napísanie lepšieho kódu

Slovník Pythonu: Ako ho môžete použiť na napísanie lepšieho kódu

Python slovník je dátová štruktúra podobná asociatívnemu poľu, ktoré sa nachádza v iných programovacích jazykoch. Pole alebo zoznam indexuje prvky podľa polohy. Slovník, na druhej strane, indexuje prvky podľa kľúče čo môžu byť struny. Predstavte si slovník ako neusporiadané sady kľúč-hodnota dvojice.





V tomto článku vám predstavíme prácu so slovníkom python.





Vytvorenie slovníka

Existuje niekoľko spôsobov, ako vytvoriť slovník pythonu. Najjednoduchšie používa inicializáciu zátvorky so syntaxou pripomínajúcou JSON.





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

Ako klávesy môžete použiť aj čísla. Buďte však opatrní pri použití čísel s pohyblivou rádovou čiarkou ako kľúčov, pretože ich počítač ukladá ako aproximácie.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{1980: '17%', 1981: '15%', 1982: '10%'}
17%

Špecifikácia párov kľúč-hodnota

Slovník môžete tiež vytvoriť a inicializovať pomocou párov hodnôt hodnôt ako argumentov kľúčových slov pre súbor diktovať () staviteľ.



Windows 10 nemôže klikať na panel úloh
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Pole n-tíc dvojíc kľúč-hodnota

Ešte ďalším spôsobom, ako vytvoriť slovník, je použiť množstvo n-tíc dvojíc kľúč-hodnota. Tu je rovnaký príklad ako vyššie.

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

Porozumenie diktátu

Porozumenie diktátu poskytuje skvelú syntax na inicializáciu diktu, ak môžete vypočítať hodnoty na základe kľúčov. Nasledujúci text inicializuje diktát čísel a štvorcových hodnôt pre rozsah čísel.





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}

Ako to funguje? Posledná časť ( pre x v xrange (10, 20) ) vráti rozsah čísel v zadanom rozsahu. Časť porozumenia diktátu ( {x: x ** 2 ..} ) prekročí tento rozsah a inicializuje slovník.

Práca so slovníkom Python

Čo môžete robiť so slovníkmi, keď ich vytvoríte? Môžete teda pristupovať k prvkom, aktualizovať hodnoty, odstraňovať prvky atď.





Prístup k prvkom slovníka Python

Pristupujte k prvku diktátu pomocou kľúča v zátvorkách rovnako ako vy pole alebo zoznam .

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

Ak je kľúčom číslo, úvodzovky nepotrebujete. Tento výraz potom vyzerá ako indexovanie zoznamu alebo poľa.

print(rain_percent[1980])
# prints
17%

Typ kľúča pri prístupe k nemu musí zodpovedať tomu, čo je uložené v slovníku Python. Nasledujúce chyby spôsobujú, pretože uložené kľúče sú čísla, zatiaľ čo prístupový kľúč je reťazec.

x = '1980'
print(rain_percent[x])
# results in
1 x = '1980'
----> 2 print(rain_percent[x])
KeyError: '1980'

Prístup k neexistujúcemu kľúču je chyba.

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

Ak mapovanie neexistuje, na prístup ku kľúču a poskytnutie predvolenej hodnoty použite príkaz dostať () metóda s predvolenou hodnotou ako druhým argumentom.

ako zistiť dátum vydania článku
print(rain_percent.get(1985, '0%'))
# prints
0%

Kontrola existencie

Čo keď chcete skontrolovať prítomnosť kľúča bez toho, aby ste sa k nemu skutočne pokúšali získať prístup (a prípadne naraziť na a KeyError ako je uvedené vyššie)? Môžete použiť v kľúčové slovo vo formulári kľúč v dct ktorý vráti booleovskú hodnotu.

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

Pomocou formulára obráťte podmienku (t.j. zaistite, aby sa kľúč nenachádzal v slovníku Python) kľúč nie je v dct . To je ekvivalentné so štandardnou negáciou pythonu nie je v dct .

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

Modifikačné prvky

Zmeňte hodnotu priradením k požadovanému kľúču.

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

Na pridanie nového mapovania do slovníka Python použite rovnakú syntax.

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

Aktualizujte viac prvkov slovníka v jednom zábere pomocou aktualizovať () metóda.

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'}

Nastavte predvolenú hodnotu pre kľúč pomocou setdefault () . Táto metóda nastaví hodnotu kľúča, ak mapovanie neexistuje. Vráti aktuálnu hodnotu.

# 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'}

Odstránenie prvkov

Odstráňte mapovania zo slovníka pomocou z operátor. Tento operátor nič nevracia.

Stretnete sa s a KeyError ak kľúč v slovníku neexistuje.

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

Použi pop () namiesto toho, keď chcete zmazanú hodnotu späť.

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

Čo keď chcete odstrániť kľúč, ak existuje, bez toho, aby ste spôsobili chybu, ak neexistuje? Môžeš použiť pop () a upresniť Žiadny k druhému argumentu takto:

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

A tu je jednoradová linka na odstránenie zväzku kľúčov zo slovníka bez toho, aby došlo k chybe na neexistujúcich kľúčoch.

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

Chcete odstrániť všetky kľúče zo slovníka? Použi jasný() metóda.

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

Opakovanie so slovníkmi v Pythone

Python ponúka mnoho metód na opakovanie záznamov v slovníku. Vyberte si taký, ktorý vyhovuje vašim potrebám.

Opakovanie kľúčov

  • Najjednoduchšia metóda na postupné spracovanie kľúčov (a prípadne hodnôt) používa slučku v tvare: | _+_ |
  • Použitie metódy iterkeys () funguje úplne rovnako ako vyššie. Vyberte si, ktorý formulár chcete použiť. | _+_ |
  • Tretí spôsob získavania a spracovania kľúčov v slučke zahŕňa použitie vstavanej funkcie iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Keď potrebujete index spracovávaného kľúča, použite príponu vymenovať () vstavaná funkcia podľa obrázku. | _+_ |

Opakovanie párov kľúč-hodnota

  • Ak chcete načítať každý pár kľúč-hodnota jediným hovorom, použite iteritems () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iterácia nad hodnotami

  • Metóda itervalues ​​() možno použiť na iteráciu všetkých hodnôt v slovníku. Aj keď táto metóda vyzerá podobne ako použitie slučky hodnoty () , je to efektívnejšie, pretože nevyberá všetky hodnoty naraz. | _+_ |

Extrahovanie polí

Nasledujúce metódy opisujú extrahovanie rôznych informácií zo slovníka Pythonu vo forme poľa. Výsledné pole je možné zacykliť pomocou bežných konštruktov pythonu. Majte však na pamäti, že vrátené pole môže byť veľké v závislosti od veľkosti slovníka. Takže to môže byť viac drahé (z hľadiska pamäte) spracovať tieto polia než pomocou vyššie uvedených metód iterátora.

Jeden prípad, kedy je prijateľné pracovať s týmito poľami, je ten, keď potrebujete odstrániť položky zo slovníka, pretože narazíte na nežiaduce prvky. Práca s iterátorom pri úprave slovníka môže spôsobiť chybu RuntimeError.

  • Metóda položky () vráti pole n-tíc párov kľúč-hodnota. Tieto páry kľúč-hodnota môžete iterovať podľa nasledujúceho obrázku: | _+_ |
  • Pomocou metódy získajte všetky kľúče zo slovníka kľúče () . | _+_ | Na vrátenie kľúčov použite vrátené pole. | _+_ |
  • Podobným spôsobom použite metódu hodnoty () načítať všetky hodnoty v slovníku. | _+_ |

Ako používate slovníky Pythonu?

V tomto článku sme sa pokúsili pokryť najbežnejšie prípady použitia slovníkov pythonu. Nezabudnite si pozrieť všetky naše ďalšie články z Pythonu pre ešte viac tipov pre Python. Ak máte ďalšie prípady použitia, o ktorých si myslíte, že by mali byť zahrnuté, dajte nám prosím vedieť v nižšie uvedených komentároch!

ako opraviť podložku pod myš na prenosnom počítači

Kredity obrázku: viper345/Shutterstock

zdieľam zdieľam Tweet E -mail Ako získať prístup k vstavanej úrovni bublín Google v systéme Android

Ak ste sa niekedy potrebovali uistiť, že je niečo v zlomku, teraz môžete do telefónu v priebehu niekoľkých sekúnd dostať úroveň bubliny.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Python
O autorovi Jay Sridhar(17 článkov uverejnených) Viac od Jaya Sridhara

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber