Annons
En python-lexikon är en datastruktur som liknar en associativ matris som finns i andra programmeringsspråk. En matris eller en lista indexerar element efter position. En ordbok indexerar däremot element efter nycklar vilket kan vara strängar. Tänk på en ordbok som oordnade uppsättningar nyckelvärde paren.
I den här artikeln introducerar vi dig att arbeta med python-ordboken.
Skapa en ordlista
Det finns flera sätt att skapa en pythonordbok. Den enklaste använder staginitialisering, med en syntax påminner om JSON Hur man får Python och JavaScript att kommunicera med JSONIdag kommer jag att visa dig hur du använder JSON för att skicka data från JavaScript till Python. Jag täcker hur du konfigurerar 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 nycklar. Var dock försiktig med att använda flytande punktnummer som nycklar, eftersom dator lagrar dessa som approximationer Allt du behöver veta om RAM- och minneshantering RAM är din dators kortvariga minne. Följaktligen har minneshantering 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 dess effektivitet. Läs mer .
rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} tryck regnpercent. tryck regnpercent [1980] # utskrifter. {1980: '17%', 1981: '15%', 1982: '10%'} 17%
Specificera nyckelvärdespar
Du kan också skapa och initiera en ordlista med hjälp av namnvärdespar som sökordargument 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
Ytterligare ett sätt att skapa en ordlista är att använda en mängd nyckelvärden. Här är samma exempel som ovan.
par = [('Kalifornien', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] population = dict (par) tryckpopulation. # utskrifter. {'Connecticut': 3574097, 'Delaware': 897934, 'Kalifornien': 37253956, 'Colorado': 5029196}
Diktförståelse
Diktförståelse ger en cool syntax för att initialisera en dikter om du kan beräkna värdena baserat på tangenterna. Följande initierar ett antal siffror och kvadratvärden för ett antal intervall.
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 nummer i det angivna intervallet. Diktförståelsesdelen ({x: x ** 2 ..}) slingrar över detta intervall och initialiserar ordboken.
Arbeta med en Python Dictionary
Vad kan du göra med ordböcker när du har skapat dem? Du kan komma åt element, uppdatera värden, ta bort element etc.
Få åtkomst till Python Dictionary Elements
Få åtkomst till ett element av en dikter med hjälp av tangenten inom parentes, precis som du skulle göra en matris eller en lista Hur arrayer och listor fungerar i PythonMatriser 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 .
tryckpopulation ['Delaware'] # utskrifter. 897934.
Om nyckeln är ett nummer behöver du inte offerten. Uttrycket verkar då se ut som en lista eller en arrayindexering.
tryck regnpercent [1980] # utskrifter. 17%
Nyckeltypen när den öppnas måste matcha vad som finns lagrat i Python-ordboken. Följande orsakar ett fel eftersom de lagrade knapparna är nummer medan åtkomstnyckeln är en sträng.
x = '1980' tryck regnpercent [x] # resultat i 1 x = '1980' > 2 tryck rain_percent [x] KeyError: '1980'
Åtkomst till en icke-existerande nyckel är ett fel.
rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} tryck regnpercent [1983] # utskrifter 1 rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} > 2 tryck rain_percent [1983] KeyError: 1983.
För att komma åt en nyckel och tillhandahålla ett standardvärde om mappningen inte finns, använd skaffa sig() metod med standardvärde som det andra argumentet.
print rain_percent.get (1985, '0%') # utskrifter. 0%
Kontrollera för existens
Vad händer om du vill kontrollera om det finns en nyckel utan att försöka komma åt den (och eventuellt möta en KeyError som ovan)? Du kan använda i nyckelord i formuläret nyckel i dct vilket returnerar en boolean.
tryck 1980 i rain_percent. tryck 1980 'i rain_percent. # utskrifter. Sann. Falsk.
Vänd om villkoret (dvs. se till att nyckeln inte finns i Python-ordboken) med hjälp av formuläret nyckel inte i dct. Detta motsvarar den vanliga pythonnegationen inte ange dct.
tryck 1980 inte i rain_percent. tryck 1985 inte i rain_percent. # utskrifter. Falsk. Sann.
Ändra element
Ändra värdet genom att tilldela den önskade nyckeln.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} användare ['ålder'] = 29. skriva ut användare. # utskrifter. {'efternamn': 'Smith', 'ålder': 29, 'förnamn': 'John'}
Använd samma syntax för att lägga till en ny mappning i Python-ordboken.
användare ['dob'] = '15 -sep-1971 ' skriva ut användare. # utskrifter. {'dob': '15 -sep-1971 ',' efternamn ':' Smith ',' age ': 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 '}) skriva ut användare. # utskrifter. {'dob': '15 -sep-1971 ',' efternamn ':' Smith ',' age ': 29,' firstname ':' John '}
Ställ in ett standardvärde för en nyckel med Sätta som normalt(). Den här metoden anger värdet för nyckeln om mappningen inte finns. Det returnerar det aktuella värdet.
# ändrar inte aktuellt värde. skriv ut användare.setdefault ('förnamn', 'Jane') # utskrifter. John # anger värde. skriv ut användare.setdefault ('stad', 'NY') # utskrifter. NY # Slutvärde. skriva ut användare. # utskrifter. {'efternamn': 'Smith', 'ålder': 27, 'förnamn': 'John', 'city': 'NY'}
Ta bort element
Radera mappningar i ordboken med hjälp av del operatör. Denna operatör returnerar ingenting.
Du kommer att stöta på en KeyError om nyckeln inte finns i ordboken.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} del användare ['ålder'] skriva ut användare. # utskrifter. {'efternamn': 'Smith', 'förnamn': 'John'}
Använd pop() i stället när du vill ta bort det raderade värdet.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} print users.pop ('ålder') skriva ut användare. # utskrifter. 27. {'efternamn': 'Smith', 'förnamn': 'John'}
Vad händer om du vill ta bort en nyckel om den finns utan att orsaka fel om den inte gör det? Du kan använda pop() och specificera Ingen för det andra argumentet enligt följande:
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} users.pop ('foo', Inget) skriva ut användare. # utskrifter. {'efternamn': 'Smith', 'ålder': 27, 'förnamn': 'John'}
Och här är en enfodring för att ta bort ett gäng nycklar från en ordlista utan att orsaka fel på icke-existerande nycklar.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27, 'dob': '15 -sep-1971 '} karta (lambda x: användare.pop (x, ingen), ['ålder', 'foo', 'dob']) skriva ut användare.
Vill du ta bort alla nycklar från en ordlista? Använd klar() metod.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} users.clear () skriva ut användare. # utskrifter. {}
Looping With Python Dictionaries
Python ger många metoder för looping Hur fungerar Loops medan datorprogrammeringLoops är en av de första kontrolltyperna du lär dig i programmering. Du vet förmodligen om medan och för öglor, men vad gör en do-while-slinga? Läs mer över uppgifterna i en ordlista. Välj en som passar ditt behov.
Looper över nycklar
- Den enklaste metoden för att bearbeta nycklar (och eventuellt värden) i sekvens använder en slinga i formen:
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för k i användare: skriv ut k, '=>', användare [k] # utskrifter. efternamn => Smith. ålder => 27. förnamn => John.
- Använda metoden iterkeys () fungerar exakt på samma sätt som ovan. Välj vilken form du vill använda.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för k i användare.iterkeys (): skriva ut 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 använda den inbyggda funktionen iter ().
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för k in iter (användare): skriv ut k, '=>', användare [k] # utskrifter. efternamn => Smith. ålder => 27. förnamn => John.
- När du behöver indexet för nyckeln som bearbetas använder du räkna upp() inbyggd funktion som visas.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för index, nyckeltal (användare): utskriftsindex, nyckel, '=>', användare [k] # utskrifter. 0 efternamn => John. 1 ålder => John. 2 förnamn => John.
Looping över viktiga par
- När du vill hämta varje nyckelvärdespar med ett enda samtal använder du iteritems ().
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för k, v i användare.iteritems (): skriva ut k, '=>', v. # utskrifter. efternamn => Smith. ålder => 27. förnamn => John.
Iterera över värden
- Metoden itervalues () kan användas för att iterera över alla värden i ordboken. Även om denna metod liknar en slinga som använder värden (), det är mer effektivt eftersom det inte extraherar alla värden på en gång.
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} för värde i users.itervalues (): utskriftsvärde. # utskrifter. Smed. 27. John.
Utdragning av matriser
Följande metoder beskriver extrahering av olika Python-ordboksinformation i en matrisform. Den resulterande matrisen kan slingas över med hjälp av normala pytonkonstruktioner. Tänk emellertid på att den returnerade matrisen kan vara stor beroende på ordlistans storlek. Så det kan vara mer dyra (minnesvis) att bearbeta dessa matriser än att använda iteratormetoderna ovan.
Ett fall där det är acceptabelt att arbeta med dessa matriser är när du behöver ta bort objekt från ordboken när du stöter på oönskade element. Att arbeta med en iterator medan du ändrar ordboken kan orsaka en RuntimeError.
- Metoden poster () returnerar en matris med nyckelvärden. 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 (): skriva ut k, '=>', v. # utskrifter. efternamn => Smith. ålder => 27. förnamn => John.
- Hämta alla nycklar i ordboken med hjälp av metoden nycklar ().
användare = {'förnamn': 'John', 'efternamn': 'Smith', 'ålder': 27} skriv ut användare.tangenter () # utskrifter. ['efternamn', 'ålder', 'förnamn']
Använd den returnerade matrisen för att slinga över tangenterna.
för k i users.keys (): skriva ut k, '=>', användare [k] # utskrifter. efternamn => Smith. ålder => 27. förnamn => John.
- På samma sätt använder du metoden värden () för att hämta alla värden i ordboken.
för värde i users.values (): utskriftsvärde. # utskrifter. Smed. 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 snabbtDen här artikeln med grundläggande exempel på python är för dem som redan har viss programmeringsupplevelse och helt enkelt vill övergå till Python så snabbt som möjligt. Läs mer För även fler Python-tips 5 kurser som tar dig från Python nybörjare till ProDessa 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ändningsfall som du tycker bör inkluderas, vänligen meddela oss i kommentarerna nedan!
Bildpoäng: viper345 / Shutterstock