Python Dictionary Hoe u het kunt gebruiken om een ​​betere code te schrijven

Python Dictionary Hoe u het kunt gebruiken om een ​​betere code te schrijven / Programming

Een python-woordenboek is een gegevensstructuur die lijkt op een associatieve array die wordt gevonden in andere programmeertalen. Een array of een lijst indexeert elementen per positie. Een woordenboek daarentegen indexeert elementen door sleutels wat snaren kan zijn. Beschouw een woordenboek als ongeordende sets van sleutel waarde paren.

In dit artikel laten we u kennismaken met het woordenboek met python.

Een woordenboek maken

Er zijn verschillende manieren om een ​​python-woordenboek te maken. De eenvoudigste maakt gebruik van brace-initialisatie, met een syntaxis die doet denken aan JSON. Python en JavaScript laten communiceren via JSON Python en JavaScript laten communiceren via JSON Vandaag laat ik u zien hoe u JSON kunt gebruiken om gegevens van JavaScript naar Python te verzenden . Ik zal bespreken hoe je een webserver installeert, samen met alle code die je nodig hebt. Lees verder .

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

U kunt ook nummers gebruiken als toetsen. Wees echter voorzichtig met drijvende-kommawaarden als sleutels, aangezien de computer deze als benaderingen opslaat Alles wat u moet weten over RAM- en geheugenbeheer Alles wat u moet weten Over RAM- en geheugenbeheer RAM is het korte-termijngeheugen van uw computer. Daarom heeft geheugenbeheer een aanzienlijke invloed op de systeemprestaties. Hier leggen we uit hoe RAM werkt en of u alles kunt doen om de efficiëntie te vergroten. Lees verder .

rain_percent = 1980: '17% ', 1981: '15%', 1982: '10% ' print regen_percent print regen_percent [1980] # prints 1980: '17%', 1981: '15% ', 1982: '10% ' 17% 

Key-Value-paren specificeren

U kunt ook een woordenboek maken en initialiseren met paren van naamwaarden als zoekwoordargumenten voor de dict () bouwer.

populatie = dict (Californië = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) afdrukpopulatie # prints 'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196 

Serie van Key-Value Tuples

Nog een andere manier om een ​​woordenboek te maken is om een ​​array van key-value tuples te gebruiken. Hier is hetzelfde voorbeeld als hierboven.

paren = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] population = dict (paren) afdrukpopulatie # prints 'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196 

Dict begrip

Dictbegrip biedt een coole syntaxis om een ​​dictaat te initialiseren als u de waarden op basis van de toetsen kunt berekenen. Het volgende initialiseert een dict of numbers en square values ​​voor een reeks getallen.

print x: x ** 2 voor 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 

Hoe werkt het? Het laatste deel (voor x in xrange (10, 20)) retourneert een bereik van getallen in het opgegeven bereik. Het gedeelte voor het begrijpen van het dictaat (x: x ** 2 ...) loopt over dit bereik en initialiseert het woordenboek.

Werken met een Python-woordenboek

Wat kun je doen met woordenboeken nadat je ze hebt gemaakt? Welnu, u kunt toegang krijgen tot elementen, waarden bijwerken, elementen verwijderen, enz.

Toegang tot woordenboekelementen van Python

Toegang tot een element van een dictaat met behulp van de sleutel tussen haakjes, net zoals je een array of een lijst zou doen Hoe arrays en lijsten werken in Python Hoe arrays en lijsten werken in Python Arrays en lijsten zijn enkele van de meest bruikbare datastructuren in programmeren - hoewel weinig mensen ze gebruiken om hun volledige potentieel. Lees verder .

afdrukpopulatie ['Delaware'] # prints 897934 

Als de sleutel een cijfer is, hebt u de aanhalingstekens niet nodig. De uitdrukking lijkt dan op een lijst of arrayindexering te lijken.

print rain_percent [1980] # prints 17% 

Het type sleutel bij het openen moet overeenkomen met wat is opgeslagen in het Python-woordenboek. Het volgende veroorzaakt een fout omdat de opgeslagen sleutels getallen zijn, terwijl de toegangssleutel een tekenreeks is.

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

Toegang tot een niet-bestaande sleutel is een fout.

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 

Als u een sleutel wilt openen en een standaardwaarde wilt opgeven als de toewijzing niet bestaat, gebruikt u de krijgen() methode met standaardwaarde als het tweede argument.

print rain_percent.get (1985, '0%') # prints 0% 

Controleren op bestaan

Wat als u wilt controleren op de aanwezigheid van een sleutel zonder deze daadwerkelijk te proberen te openen (en mogelijk tegenkomt) KeyError zoals hierboven)? U kunt de in sleutelwoord in het formulier sleutel in dct die een boolean retourneert.

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

De voorwaarde omkeren (dat wil zeggen zorg ervoor dat de sleutel niet aanwezig is in het woordenboek van Python) met behulp van het formulier sleutel niet in dct. Dit komt overeen met de standaard python-ontkenning geen sleutel in dct.

print 1980 niet in regen_percent print 1985 niet in regen_percent # prints Onwaar Waar 

Elementen wijzigen

Wijzig de waarde door deze toe te wijzen aan de vereiste sleutel.

gebruikers = 'voornaam': 'John', 'achternaam': 'Smith', 'leeftijd': 27 gebruikers ['leeftijd'] = 29 drukwerk gebruikers # prints 'achternaam': 'Smith', 'leeftijd': 29, 'voornaam': 'John' 

Gebruik dezelfde syntaxis om een ​​nieuwe toewijzing toe te voegen aan het Python-woordenboek.

gebruikers ['dob'] = '15 -sep-1971 'print gebruikers # prints ' dob ': '15 -sep-1971', 'achternaam': 'Smith', 'age': 29, 'voornaam': ' John' 

Update meerdere elementen van een woordenboek in één keer met behulp van de bijwerken() methode.

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

Stel een standaardwaarde in voor een sleutel met standaard instellen(). Met deze methode wordt de waarde voor de sleutel ingesteld als de toewijzing niet bestaat. Het geeft de huidige waarde terug.

# wijzigt huidige waarde niet print gebruikers.setdefault ('voornaam', 'Jane') # afdrukken John # stelt waarde in gebruik gebruikers.setdefault ('stad', 'NY') # prints NY # Eindwaarde afdruk gebruikers # prints ' achternaam ':' Smith ',' age ': 27,' firstname ':' John ',' city ':' NY ' 

Elementen verwijderen

Verwijder toewijzingen in het woordenboek met behulp van de del operator. Deze operator retourneert niets.

Je zult een tegenkomen KeyError als de sleutel niet bestaat in het woordenboek.

users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 del users ['age'] print gebruikers # prints 'lastname': 'Smith', 'voornaam': ' John' 

Gebruik de knal() methode in plaats daarvan, wanneer u de verwijderde waarde terug wilt.

users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 print users.pop ('age') print gebruikers # prints 27 'achternaam': 'Smith', 'voornaam ':' John ' 

Wat als u een sleutel wilt verwijderen als deze bestaat, zonder een fout te veroorzaken als dit niet het geval is? Je kunt gebruiken knal() en specificeer Geen voor het tweede argument als volgt:

users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 users.pop ('foo', None) print gebruikers # prints 'achternaam': 'Smith', 'leeftijd ': 27,' voornaam ':' John ' 

En hier is een one-liner om een ​​aantal sleutels uit een woordenboek te verwijderen zonder een fout te veroorzaken op niet-bestaande sleutels.

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

Wilt u alle sleutels uit een woordenboek verwijderen? Gebruik de duidelijk() methode.

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

Looping met Python-woordenboeken

Python biedt vele methoden voor het lussen Hoe doen-terwijl-lussen werken bij computerprogrammeren Hoe doen-terwijl-lussen werken bij computerprogrammering Lussen zijn een van de eerste besturingstypen die u bij het programmeren leert. Je weet waarschijnlijk wel over while en for loops, maar wat bereikt een do-while-lus? Lees meer over de vermeldingen van een woordenboek. Kies er een die bij je behoefte past.

Sleutels in een lus

  • De eenvoudigste methode voor het opeenvolgend verwerken van sleutels (en mogelijk waarden) gebruikt een lus van het formulier:
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor k in gebruikers: print k, '=>', gebruikers [k] # prints achternaam => Smith age = > 27 voornaam => John 
  • De methode gebruiken iterkeys () werkt precies hetzelfde als hierboven. Maak uw keuze in welke vorm u wilt gebruiken.
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor k in users.iterkeys (): print k, '=>', gebruikers [k] # prints achternaam = > Smith-leeftijd => 27 voornaam => John 
  • Een derde methode om sleutels in een lus op te halen en te verwerken, is het gebruik van de ingebouwde functie iter ().
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor k in iter (gebruikers): print k, '=>', gebruikers [k] # prints achternaam => Smith-leeftijd => 27 voornaam => John 
  • Wanneer u de index van de sleutel die wordt verwerkt nodig hebt, gebruikt u de sommen () ingebouwde functie zoals weergegeven.
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor index, key in enumerate (gebruikers): print index, key, '=>', gebruikers [k] # prints 0 lastname => John 1 age => John 2 voornaam => John 

Loops over Key-Value-paren

  • Als u elk sleutel / waarde-paar met één enkele oproep wilt ophalen, gebruikt u iteritems ().
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor k, v in users.iteritems (): print k, '=>', v # prints lastname => Smith-leeftijd => 27 voornaam => John 

Overwaarden herhalen

  • De methode itervalues ​​() kan worden gebruikt om alle waarden in het woordenboek te herhalen. Hoewel deze methode lijkt op een lus die gebruikt waarden (), het is efficiënter omdat het niet alle waarden tegelijk extraheert.
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor waarde in users.itervalues ​​(): printwaarde # prints Smith 27 John 

Arrays extraheren

De volgende methoden beschrijven het extraheren van verschillende Python-woordenboekinformatie in een matrixvorm. De resulterende array kan worden doorgelust met behulp van normale python-constructies. Houd er echter rekening mee dat de geretourneerde array groot kan zijn, afhankelijk van de grootte van het woordenboek. Dus het kan meer zijn duur (geheugengewijs) om deze arrays te verwerken dan met behulp van de iterator-methoden hierboven.

Een geval waarin het acceptabel is om met deze arrays te werken, is wanneer u items uit het woordenboek moet verwijderen als u ongewenste elementen tegenkomt. Werken met een iterator tijdens het aanpassen van het woordenboek kan een RuntimeError veroorzaken.

  • De methode items () geeft een array van sleutelwaarde-tupels terug. U kunt deze sleutel / waarde-paren als volgt herhalen:
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 voor k, v in users.items (): print k, '=>', v # prints achternaam => Smith-leeftijd => 27 voornaam => John 
  • Haal alle sleutels in het woordenboek op met behulp van de methode sleutels ().
    users = 'firstname': 'John', 'lastname': 'Smith', 'age': 27 print users.keys () # prints ['achternaam', 'leeftijd', 'voornaam'] 

    Gebruik de geretourneerde array om over de toetsen te lus te gaan.

    voor k in users.keys (): print k, '=>', gebruikers [k] # prints lastname => Smith age => 27 firstname => John 
  • Gebruik op dezelfde manier de methode waarden () om alle waarden in het woordenboek op te halen.
    voor waarde in users.values ​​(): printwaarde # prints Smith 27 John 

Hoe gebruikt u Python-woordenboeken??

We hebben geprobeerd de meest voorkomende use-cases voor python-woordenboeken in dit artikel te behandelen. Bekijk ook al onze andere Python-artikelen 10 Fundamentele Python-voorbeelden die u zullen helpen snel te leren 10 Fundamentele Python-voorbeelden die u zullen helpen snel te leren Dit artikel van eenvoudige Python-voorbeelden is voor diegenen die al enige programmeerervaring hebben en gewoon willen overgang naar Python zo snel mogelijk. Lees meer voor nog meer tips van Python 5 Cursussen die je meenemen van Python Beginner naar Pro 5 Cursussen die je meenemen van Python Beginner naar Pro Deze vijf cursussen leren je alles over programmeren in Python, een van de populairste talen die er zijn nu. Lees verder . Als u andere gevallen van gebruik heeft waarvan u vindt dat ze moeten worden opgenomen, kunt u ons dit laten weten in de opmerkingen hieronder!

Afbeeldingscredits: viper345 / Shutterstock

Ontdek meer over: Python.