Python Dictionary hur du kan använda den för att skriva bättre kod
En pythonordlista är en datastruktur som liknar en associativ array som finns i andra programmeringsspråk. En array eller en lista indexerar element efter position. En ordbok indexerar däremot elementen av nycklar vilket kan vara strängar. Tänk på en ordlista som oordnade uppsättningar av nyckelvärde par.
I den här artikeln introducerar vi dig att arbeta med pythonordboken.
Skapa en ordbok
Det finns flera sätt att skapa en pythonordlista. Den enklaste användningsstartinitialiseringen med en syntax som påminner om JSON Hur man får Python och JavaScript att kommunicera med JSON Hur får man Python och JavaScript att kommunicera med JSON Idag visar jag dig hur du använder JSON för att skicka data från JavaScript till Python . Jag kommer att täcka hur du installerar en webbserver, tillsammans med all kod du behöver. Läs mer .
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27
Du kan också använda siffror som nycklarna. Var försiktig med att använda flytande punktnummer som nycklar, eftersom datorn lagrar dessa som approximationer Allt du behöver veta om RAM- och minneshantering Allt du behöver veta om RAM- och minnehantering RAM är datorns kortvariga minne. Därför har minneshanteringen en betydande inverkan på systemets prestanda. Här förklarar vi hur RAM fungerar och om du kan göra något för att öka effektiviteten. Läs mer .
rain_percent = 1980: '17% ', 1981: '15%', 1982: '10% ' print rain_percent print rain_percent [1980] # tryck 1980: '17%', 1981: '15% ', 1982: '10% ' 17%
Ange nyckelparametrar
Du kan också skapa och initialisera en ordlista med namnvärdespar som sökordsargument till dict () konstruktör.
population = dict (Kalifornien = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) tryckpopulation # utskrifter 'Connecticut': 3574097, 'Delaware': 897934, 'Kalifornien': 37253956, 'Colorado': 5029196
Array of Key-Value Tuples
Ännu ett annat sätt att skapa en ordlista är att använda en rad nyckelvärdes tuples. Här är samma exempel som ovan.
par = [('Kalifornien', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] population = dict 3574097, "Delaware": 897934, "Kalifornien": 37253956, "Colorado": 5029196
Diktförståelse
Diktförståelse ger en cool syntax för att initiera en dikt om du kan beräkna värdena baserat på tangenterna. Följande initierar en dikt av siffror och kvadratvärden för ett antal tal.
skriv ut x: x ** 2 för x i xrange (10, 20) # utskrifter 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17 : 289, 18: 324, 19: 361
Hur fungerar det? Den senare delen (för x i xrange (10, 20)) returnerar ett antal tal inom det angivna intervallet. Diktförståelsens del (x: x ** 2 ...) loopar över detta intervall och initialiserar ordlistan.
Arbeta med en Python Dictionary
Vad kan du göra med ordböcker när du har skapat dem? Tja, du kan komma åt element, uppdatera värden, ta bort element etc..
Åtkomst till Python Dictionary Elements
Få tillgång till ett element i en dikt med hjälp av nyckeln inom parentes, precis som du skulle en array eller en lista. Hur Arrays och Lists arbetar i Python. Hur Arrays och Lists fungerar i Python Arrays och listor är några av de mest användbara datastrukturerna i programmering - även om få människor använder dem till sin fulla potential. Läs mer .
tryck befolkning ['Delaware'] # utskrifter 897934
Om nyckeln är ett nummer behöver du inte citat. Uttrycket ser ut att se ut som en lista eller array indexering.
skriva ut rain_percent [1980] # utskrifter 17%
Typen av nyckeln när du öppnar den måste matcha det som lagras i Python-ordlistan. Följande orsakar ett fel eftersom de lagrade nycklarna är nummer medan åtkomstnyckeln är en sträng.
x = '1980' print rain_percent [x] # resultat i 1 x = '1980' ----> 2 print rain_percent [x] KeyError: '1980'
Åtkomst till en obefintlig nyckel är ett fel.
rain_percent = 1980: '17% ', 1981: '15%', 1982: '10% ' print rain_percent [1983] # utskrifter 1 rain_percent = 1980: '17%', 1981: '15% ', 1982 : '10% ' ----> 2 print rain_percent [1983] KeyError: 1983
För att komma åt en nyckel och ange ett standardvärde om kartläggningen inte existerar, använd skaffa sig() metod med standardvärde som det andra argumentet.
skriva ut rain_percent.get (1985, '0%') # utskrifter 0%
Kontrollerar förekomsten
Vad händer om du vill kontrollera om en nyckel finns utan att försöka få tillgång till den (och eventuellt stöter på a KeyError som ovan)? Du kan använda i sökord i formuläret nyckel i dct som returnerar en booleska.
print 1980 i rain_percent print '1980' i rain_percent # utskrifter True False
Omvänd villkoret (dvs säkerställa att nyckeln inte finns i Python-ordlistan) med hjälp av formuläret nyckel inte i dct. Detta motsvarar standard python negationen inte nyckel i dct.
tryck 1980 inte i rain_percent print 1985 inte i rain_percent # utskrifter falskt sant
Ändra element
Ändra värdet genom att tilldela den önskade nyckeln.
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 användare ['age'] = 29 print användare # utskrifter 'efternamn': 'Smith' 29, 'firstname': 'John'
Använd samma syntax för att lägga till en ny mappning i Python-ordlistan.
Användare ['dob'] = '15 -sep-1971 'skrivare # utskrifter ' dob ': '15 -sep-1971', 'efternamn': 'Smith', 'ålder': 29, 'firstname' John '
Uppdatera flera element i en ordlista i ett skott med hjälp av uppdatering() metod.
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 users.update ('age': 29, 'dob': '15 -sep-1971 ') användare # utskrifter 'dob': '15 -sep-1971 ',' efternamn ':' Smith ',' ålder ': 29,' firstname ':' John '
Ange ett standardvärde för en nyckel med Sätta som normalt(). Denna metod anger värdet för nyckeln om kartläggningen inte existerar. Den returnerar nuvärdet.
# ändrar inte nuvarande värde utskrift users.setdefault ('firstname', 'Jane') # utskrifter John # sätter värde skrivare users.setdefault ('city', 'NY') # utskrifter NY # Slutvärde utskriftsanvändare # utskrifter ' efternamn ':' Smith ',' ålder ': 27,' firstname ':' John ',' city ':' NY '
Radera element
Ta bort mappings i ordlistan med hjälp av del operatör. Den här operatören returnerar inte något.
Du kommer att stöta på en KeyError om nyckeln inte finns i ordlistan.
Användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 del användare ['ålder'] skriv ut användare # utskrifter 'efternamn' John '
Använd pop() metod istället när du vill ha det borttagna värdet tillbaka.
Användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 Skriv ut användarnas.pop ('ålder') utskrift användare # utskrifter 27 'efternamn': 'Smith' ':' John '
Vad händer om du vill ta bort en nyckel om den existerar, utan att orsaka ett fel om det inte gör det? Du kan använda pop() och specificera Ingen för andra argumentet enligt följande:
Användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 users.pop ('foo', None) Skriv ut användare # utskrifter 'efternamn': 'Smith' ': 27,' firstname ':' John '
Och här är en en-liner för att ta bort en massa nycklar från en ordlista utan att orsaka ett fel på obefintliga nycklar.
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27, 'dob': '15-sep-1971 ' karta (lambda x: users.pop (x, None) , ['age', 'foo', 'dob']) skriva ut användare
Vill du radera alla nycklar från en ordlista? Använd klar() metod.
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 users.clear () Skriv ut användare # utskrifter
Looping med Python-ordböcker
Python ger många metoder för looping Hur gör-medan loopar arbetar med datorprogrammering Hur gör-medan loopar arbetar med datorprogrammering Loop är en av de första kontrolltyperna du lär dig i programmering. Du vet förmodligen om stund och för slingor, men vad åstadkommer en stund-slinga? Läs mer om posterna i en ordlista. Välj en som passar ditt behov.
Looping över nycklar
- Den enklaste metoden för bearbetning av nycklar (och eventuellt värden) i följd använder en slinga i formuläret:
Användare = 'firstname': 'John', 'efternamn': 'Smith', 'ålder': 27 för k i användare: skriv ut k, '=>', användare [k] # utskrifter efternamn => Smith age = > 27 förnamn => John
- Använda metoden iterkeys () fungerar exakt samma som ovan. Välj vilken form du vill använda.
Användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för k i users.iterkeys (): print k, '=>', användare [k] # utskrifter efternamn = > Smith ålder => 27 förnamn => John
- En tredje metod för att hämta och bearbeta nycklar i en slinga innebär att du använder den inbyggda funktionen iter ().
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för k i iter (användare): print k, '=>', användare [k] # utskrifter efternamn => Smith ålder => 27 förnamn => John
- När du behöver indexet för nyckeln som behandlas använder du räkna upp() inbyggd funktion som visas.
Användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för index, skriv in räkna upp (användare): Skriv ut index, nyckel, '=>', användare [k] utskrifter 0 efternamn => John 1 ålder => John 2 firstname => John
Looping över nyckel-värdepar
- När du vill hämta varje nyckelvärdespar med ett samtal, använd iteritems ().
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för k, v i users.iteritems (): print k, '=>', v # utskrifter efternamn => Smith ålder => 27 förnamn => John
Iterating över värden
- Metoden itervalues () kan användas för att iterera över alla värden i ordlistan. Även om den här metoden liknar en slinga med värden (), Det är effektivare eftersom det inte extraherar alla värden samtidigt.
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för värde i users.itervalues (): tryckvärde # utskrifter Smith 27 John
Utdragning av arrays
Följande metoder beskriver att extrahera olika Python-ordlistor i en matrisform. Den resulterande matrisen kan slingas över med användning av normala pytonkonstruktioner. Men kom ihåg att den returnerade matrisen kan vara stor beroende på ordlängden. Så det kan vara mer dyrt (minnevis) att bearbeta dessa arrays än att använda iteratormetoderna ovan.
Ett fall där det är acceptabelt att arbeta med dessa arrays är när du behöver ta bort objekt från ordlistan när du stöter på oönskade element. Att arbeta med en iterator medan du ändrar ordlistan kan orsaka en RuntimeError.
- Metoden poster () returnerar en uppsättning nyckelvärdes tuplar. Du kan iterera över dessa nyckelvärdespar som visas:
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 för k, v i users.items (): print k, '=>', v # utskrifter efternamn => Smith ålder => 27 förnamn => John
- Hämta alla nycklar i ordlistan med metoden nycklar ().
användare = 'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27 skriv ut användare.keys () # utskrifter ['efternamn', 'ålder', 'förnamn']
Använd den returnerade matrisen till att slingra över knapparna.
för k i users.keys (): print k, '=>', användare [k] # utskrifter efternamn => Smith ålder => 27 firstname => John
- På samma sätt använd metoden värden () för att hämta alla värden i ordlistan.
för värde i users.values (): utskriftsvärde # utskrifter Smith 27 John
Hur använder du Python-ordböcker?
Vi har försökt att täcka de vanligaste användningsfallen för pythonordböcker i den här artikeln. Se till att kolla in alla våra andra Python-artiklar. 10 Grundläggande Python-exempel som hjälper dig att lära dig snabbt. 10 Grundläggande Python-exempel som hjälper dig att lära dig snabbt. Denna artikel av grundläggande python-exempel är för dem som redan har någon programmeringserfarenhet och vill helt enkelt övergång till Python så fort som möjligt. Läs mer för ännu mer Python tips 5 Kurser som tar dig från Python Nybörjare till Pro 5 Kurser som tar dig från Python Nybörjare till Pro Dessa fem kurser lär dig allt om programmering i Python, ett av de hetaste språken där ute just nu. Läs mer . Om du har andra användarfall som du tycker bör ingå, vänligen meddela oss i kommentarerna nedan!
Bildkrediter: viper345 / Shutterstock
Utforska mer om: Python.