Vai vēlaties uzzināt, kā strādāt ar Python vārdnīcām? Šajā apmācībā tiks apskatītas Python vārdnīcu metodes, lai lasītu, modificētu un veiktu citas parastās darbības ar Python vārdnīcām.
Sāksim ar Python vārdnīcu pamatu pārskatīšanu un pēc tam izveidosim vārdnīcas piemēru un modificējam to, izmantojot Python vārdnīcu metodes.
Sāksim…
Pārskats par Python vārdnīcām
Vārdnīcas ir Python iebūvētas datu struktūras. Tas ļauj saglabāt vienumus atslēgu un vērtību pāros, definējot saistību vai kartēšanu starp atslēgām un vērtībām.
Atslēgām vārdnīcā jābūt unikālām (lai tās būtu jauktas). Varat izmantot taustiņu, lai meklētu vērtību, vai izmantot iebūvētās metodes (jūs tās uzzināsit drīz).
Veidojot Python vārdnīcu, varat inicializēt visus atslēgu un vērtību pārus vai inicializēt tukšu vārdnīcu un pēc tam pievienot atslēgu un vērtību pārus.
>>> dict1 = {'language':'Python','like':True} >>> type(dict1) <class 'dict'> # or we can do the following: >>> dict1 = {} >>> dict1['language']='Python' >>> dict1['like']=True
Python vārdnīcas metodes parastajām darbībām
Piezīme. Lai sekotu koda piemēriem, ir jābūt instalētai Python 3.7 vai jaunākai versijai.
Varat kodēt līdzi Python REPL. Vai arī sekojiet līdzi pcdream.lt tiešsaistes Python redaktorā.
>>> person = {'name':'Alice', ... 'city':'Portland', ... 'interest':'Programming', ... 'profession':'Developer' ... }
Tagad, kad esam inicializējuši Python vārdnīcu, sāksim aplūkot dažādas vārdnīcas metodes.
Iegūstiet vārdnīcas taustiņus ar taustiņiem ()
Viena no izplatītākajām darbībām, strādājot ar Python vārdnīcu, ir piekļuve visām atslēgām, vērtībām un atslēgu-vērtību pāriem. Lai iegūtu vārdnīcas taustiņus, varat izsaukt keys() metodi, kā parādīts attēlā:
>>> person.keys() dict_keys(['name', 'city', 'interest', 'profession'])
Iegūstiet vārdnīcas vērtības ar vērtībām ()
Metode Values() atgriež visas vērtības un ir noderīga, ja vēlaties tālāk apstrādāt šīs vērtības.
Piekļūsim visām personu vārdnīcas vērtībām:
>>> person.values() dict_values(['Alice', 'Portland', 'Programming', 'Developer'])
Iegūstiet atslēgu-vērtību pārus ar vienumiem ()
Metode items() atgriež atslēgu vērtību kortežu sarakstu. Tāpēc, izsaucot šo metodi personu vārdnīcā, tiek parādīts atslēgas vērtību korešu saraksts:
>>> person.items() dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), ('profession', 'Developer')])
Iegūstiet seklu kopiju ar kopiju ()
Copy() metode atgriež seklu Python vārdnīcas kopiju.
>>> person_cpy = person.copy()
Šeit persona_cpy ir sekla personu vārdnīcas kopija. Ļaujiet mums modificēt šo kopiju, atjauninot taustiņu “name” uz “Bob”.
>>> person_cpy['name'] = 'Bob' >>> person_cpy
Tagad, pārbaudot vārdnīcas saturu, varat redzēt, ka vārds „vārds” ir atjaunināts uz „Bob”.
{ 'name': 'Bob', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Tomēr sākotnējā personu vārdnīca nav mainīta.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Iestatiet noklusējuma vērtības ar setdefault()
Strādājot ar Python vārdnīcām, parasti rodas KeyError izņēmums, ja atslēgas vārdnīcā nav. Šis ir piemērs, kad mēs mēģinām piekļūt vecuma atslēgai:
>>> person['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Varat izvairīties no šādām kļūdām, izmantojot iebūvētās metodes setdefault() un get(), nevis piekļūstot iepriekš norādītajai vērtībai.
Metode setdefault(key) atgriež dict[‘key’] ja atslēga ir klāt diktā.
>>> person.setdefault('name') 'Alice'
Ja atslēgas nav, tā pievieno atslēgu vārdnīcai ar noklusējuma vērtību Nav.
>>> person.setdefault('address') >>> person
Šeit personas vārdnīcā nav atslēgas „adrese”. Bet mēs redzam, ka tas ir pievienots ar noklusējuma vērtību Nav.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': None }
Tagad mēs varam iestatīt taustiņu „adrese” uz kādu adresi:
>>> person['address'] = "10, xyz street"
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street' }
Varat arī norādīt vērtību metodes izsaukumā, kā parādīts attēlā:
>>> person.setdefault('country','USA') 'USA' >>> person
Tā kā “valsts” atslēga sākotnēji nav iekļauta personu vārdnīcā, mēs redzam, ka tai ir pievienota vērtība “ASV”.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Iegūstiet noteiktu vērtību ar get()
Metode get() atgriež atslēgai atbilstošo vērtību. Tas arī pēc izvēles izmanto citu noklusējuma vērtību, kas tiek atgriezta, ja atslēga nav atrasta vārdnīcā.
Mēģinot piekļūt atslēgas “name” vērtībai, mēs saņemam “Alise”, jo atslēga atrodas personīgi:
>>> person.get('name') 'Alice'
Personu vārdnīcai nav “gpa” atslēgas. Tātad, mēģinot iegūt tā vērtību, Python REPL mēs neko nesaņemam. Tomēr, ja izdrukāsiet vērtību, jūs saņemsiet Neviens.
>>> person.get('gpa') >>> print(person.get('gpa')) None
Bet, ja norādāt neobligāto noklusējuma vērtību, mēs iegūstam šo vērtību, nevis None.
>>> person.get('gpa','not found') 'not found'
Tomēr metode get() vārdnīcai nepievieno atslēgu „gpa”.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Izpratne par setdefault() un get()
Lai gan, lai apstrādātu KeyError, var izmantot gan setdefault(), gan get() metodes, apkoposim atšķirības no tā, ko esam iemācījušies:
- dict.setdefault(key,val) pievieno atslēgu ar val kā noklusējuma vērtību. Ja val nav norādīts, atslēgai tiek pievienota noklusējuma vērtība Nav.
- dict.get(key,val) atgriež vērtību, kas atbilst atslēgai no Python vārdnīcas. Ja atslēgas nav, tā atgriež vērtību (ja tāda ir) vai None, bet nepievieno atslēgu vārdnīcai.
Varat arī izmantot noklusējuma diktātu Python, lai labāk apstrādātu atslēgas kļūdas.
Atjaunināt vārdnīcas saturu ar atjauninājumu()
Varat atjaunināt esošu Python vārdnīcu, izmantojot atslēgu un vērtību pārus no citas vārdnīcas. Varat arī atjaunināt ar jebkura Python iterable saturu, izmantojot metodi update().
Definēsim vārdnīcu more_details. Pēc tam mēs atjauninām personu vārdnīcu ar saturu no vārdnīcas more_details:
>>> more_details = {'hobby':'singing', 'likes':'sweets'} >>> person.update(more_details)
No tālāk redzamā izvada redzams, ka personu vārdnīcai ir pievienoti taustiņi “hobijs” un “patīk”.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing', 'likes': 'sweets' }
Noņemiet pēdējo pievienoto vienumu ar popitem()
Popitem() vārdnīcas metodi var izmantot, lai noņemtu pēdējo pievienoto atslēgu un vērtību pāri.
>>> person.popitem() ('likes', 'sweets')
Kā redzams, izsaucot metodi popitem() personu vārdnīcā, tiek atgriezts (‘patīk’, ‘saldumi’) atslēgas vērtību pāris — pēdējais pievienotais vienums vārdnīcā.
Tas arī noņem atslēgas vērtību pāri. To varat pārliecināties, izpētot vārdnīcas saturu:
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing' }
Noņemiet vārdnīcas vienumu ar pop()
Mēs zinām, ka vārdnīcas metode popitem() noņem un atgriež pēdējo atslēgu un vērtību pāri Python vārdnīcā. Tomēr dažreiz mums var būt nepieciešams noņemt citus vienumus, izņemot pēdējo pievienoto atslēgu un vērtību pāri.
Lai to izdarītu, mēs varam izmantot Python vārdnīcas metodi pop(): izmantojot .pop(key) vārdnīcā, tiek atgriezta atslēgai atbilstošā vērtība, kā arī tiek noņemts atslēgas-vērtības pāris no vārdnīcas.
Šeit ir piemērs:
>>> person.pop('hobby') 'singing'
Atverot vienumu, kas atbilst atslēgai “hobijs”, mēs redzam, ka tā vairs nav vārdnīcā.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Ja mēs nododam atslēgu, kas neeksistē, mēs saskaramies ar KeyError izņēmumu, kā parādīts:
>>> person.pop('age') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Šeit mēs saskaramies ar KeyError izņēmumu, jo personu vārdnīcā nav vecuma atslēgas.
Atšķirībā no saraksta pop() metodes, kas pēc noklusējuma noņem pēdējo vienumu, vārdnīcas pop() metodei ir nepieciešama atslēga. Ja metodē nenorādīsit atslēgu, mēs radīsim kļūdas.
>>> person.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Dzēst visus vārdnīcas vienumus ar Clear()
Vārdnīcas metodes pop() un popitem() vienlaikus noņem vienu atslēgas vērtību pāri. Ja vēlaties dzēst visus vārdnīcas vienumus, varat izmantot metodi clear().
>>> person.clear() >>> person {}
Kā redzams, personas vārdnīcā izsaucot metodi clear(), tiek noņemti visi atslēgu un vērtību pāri, un personu vārdnīca tagad ir tukša.
Python vārdnīcas metožu kopsavilkums
Šeit ir īss pārskats par Python vārdnīcas metodēm, kuras esam iemācījušies.
MethodSyntaxDescriptionkeys()dict1.keys()Atgriež dict1values()dict1.values()atslēgas vērtības dict1items()dict1.items()Atgriež visu atslēgu-vērtību pāru sarakstu dict1copy()dict1. Atgriež seklu dict1setdefault()dict1.setdefault(key, default_value) — pievieno atslēgu ar izvēles noklusējuma_vērtību kā atslēgu dict1 (ja nav norādīta, noklusējuma vērtība ir None).
– Atgriež dict1[key] ja atslēga jau ir presentget()dict1.get(key,default_value)– atgriež dict1[key] ja atslēga atrodas dict1; Pretējā gadījumā atgriež noklusējuma_vērtību
– Ja atslēgas nav dict1 un noklusējuma_vērtība nav norādīta, atgriež Noneupdate()dict1.update(iterable1)Atjaunina dict1 ar atslēgu vērtību pāriem no iterable1popitem()dict1.popitem()Noņem un atgriež pēdējo atslēgas vērtību pāri no dict1pop()dict1.pop(key)– noņem un atgriež atslēgai atbilstošo vērtību: dict1[key]
– Izraisa KeyError, ja atslēgas nav dict1clear()dict1.clear()Dzēš visus vienumus no dict1
Secinājums
Jūs esat iemācījies izmantot parastās metodes, lai Python vārdnīcās veiktu lasīšanas, atjaunināšanas un dzēšanas darbības. Turklāt jūs arī uzzinājāt, kā metodes get() un setdefault() var izmantot, lai apstrādātu KeyError izņēmumus, atgriežot noklusējuma vērtību un pievienojot Python vārdnīcai ierakstu ar noklusējuma vērtību. Varat arī kārtot Python vārdnīcu pēc atslēgas vai vērtības.
Pēc tam apskatiet noderīgo Python saraksta metožu sarakstu. Laimīgu kodēšanu!