Python Dictionary: Sådan kan du bruge den til at skrive bedre kode

Python Dictionary: Sådan kan du bruge den til at skrive bedre kode

En pythonordbog er en datastruktur, der ligner en associativ matrix, der findes i andre programmeringssprog. En matrix eller en liste indekserer elementer efter position. En ordbog indekserer derimod elementer ved nøgler som kan være strenge. Tænk på en ordbog som uordnede sæt af nøgleværdi par.





I denne artikel introducerer vi dig til at arbejde med pythonordbogen.





Oprettelse af en ordbog

Der er flere måder at oprette en pythonordbog på. Den enkleste bruger initialisering af brace, med en syntaks, der minder om JSON.





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

Du kan også bruge tal som taster. Vær dog forsigtig med at bruge flydende tal som nøgler, da computeren gemmer disse som tilnærmelser.

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

Angivelse af par med nøgleværdi

Du kan også oprette og initialisere en ordbog ved hjælp af navneværdipar som søgeordsargumenter til dict () Bygger.



hindbær pi 3b vs 3b+
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Array af nøgleværdipupler

Endnu en anden måde at oprette en ordbog er at bruge en række nøgleværdipupler. Her er det samme eksempel som ovenfor.

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

Diktforståelse

Diktforståelse giver en cool syntaks til at initialisere et dikt, hvis du kan beregne værdierne baseret på nøglerne. Følgende initialiserer en diktering af tal og kvadratiske værdier for et talinterval.





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}

Hvordan virker det? Sidste del ( til x i xrange (10, 20) ) returnerer et talområde i det angivne område. Diktforståelsesdelen ( {x: x ** 2 ..} ) sløjfer over dette område og initialiserer ordbogen.

Arbejde med en Python -ordbog

Hvad kan du gøre med ordbøger, når du har oprettet dem? Nå, du kan få adgang til elementer, opdatere værdier, slette elementer osv.





Adgang til Python Dictionary Elements

Få adgang til et element i en dikt ved hjælp af nøglen inden for parentes, ligesom du ville en matrix eller en liste .

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

Hvis nøglen er et tal, behøver du ikke citaterne. Udtrykket ser derefter ud til at ligne en liste eller matrixindeksering.

print(rain_percent[1980])
# prints
17%

Nøglens type, når du får adgang til den, skal stemme overens med det, der er gemt i Python -ordbogen. Følgende forårsager en fejl, da de gemte nøgler er tal, mens adgangsnøglen er en streng.

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

Adgang til en ikke-eksisterende nøgle er en fejl.

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

For at få adgang til en nøgle og angive en standardværdi, hvis tilknytningen ikke findes, skal du bruge få() metode med standardværdi som det andet argument.

windows.com/stopcode kritisk proces døde
print(rain_percent.get(1985, '0%'))
# prints
0%

Kontrol af eksistens

Hvad hvis du vil kontrollere tilstedeværelsen af ​​en nøgle uden egentlig at forsøge at få adgang til den (og muligvis støde på en KeyError som ovenfor)? Du kan bruge i nøgleord i formularen nøgle i dct som returnerer en boolean.

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

Omvend tilstanden (dvs. sikre, at nøglen ikke er til stede i Python -ordbogen) ved hjælp af formularen nøgle ikke i dct . Dette svarer til standard python -negation ikke nøgle i dct .

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

Ændring af elementer

Skift værdien ved at tildele den nødvendige nøgle.

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

Brug den samme syntaks til at tilføje en ny kortlægning til Python -ordbogen.

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

Opdater flere elementer i en ordbog i ét skud ved hjælp af opdater () metode.

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

Angiv en standardværdi for en nøgle vha sæt standard() . Denne metode angiver værdien for nøglen, hvis kortlægningen ikke findes. Den returnerer den aktuelle værdi.

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

Sletning af elementer

Slet tilknytninger i ordbogen ved hjælp af af operatør. Denne operatør returnerer ikke noget.

Du vil støde på en KeyError hvis nøglen ikke findes i ordbogen.

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

Brug pop () metode i stedet, når du vil have den slettede værdi tilbage.

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

Hvad hvis du vil slette en nøgle, hvis den findes, uden at forårsage en fejl, hvis den ikke gør det? Du kan bruge pop () og angiv Ingen for det andet argument som følger:

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

Og her er en one-liner til at slette en masse nøgler fra en ordbog uden at forårsage en fejl på ikke-eksisterende nøgler.

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

Vil du slette alle nøgler fra en ordbog? Brug klar() metode.

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

Looping med Python -ordbøger

Python giver mange metoder til looping over posterne i en ordbog. Vælg en, der passer til dit behov.

Looping over nøgler

  • Den enkleste metode til behandling af nøgler (og muligvis værdier) i rækkefølge bruger en loop af formularen: | _+_ |
  • Brug af metoden iterkeys () fungerer nøjagtig det samme som ovenfor. Vælg, hvilken form du vil bruge. | _+_ |
  • En tredje metode til at hente og behandle nøgler i en loop involverer brug af den indbyggede funktion iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Når du har brug for indekset for nøglen, der behandles, skal du bruge opregne () indbygget funktion som vist. | _+_ |

Looping over nøgleværdipar

  • Når du vil hente hvert nøgleværdipar med et enkelt opkald, skal du bruge iteritems () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iterering over værdier

  • Metoden itervalues ​​() kan bruges til at gentage alle værdierne i ordbogen. Selvom denne metode ligner en loop med værdier () , det er mere effektivt, da det ikke udtrækker alle værdierne på én gang. | _+_ |

Udtrækning af arrays

De følgende metoder beskriver udtrækning af forskellige Python -ordbogsoplysninger i en matrixform. Det resulterende array kan sløjfes ved hjælp af normale python -konstruktioner. Husk dog, at det returnerede array kan være stort afhængigt af ordbogens størrelse. Så det kan være mere dyrt (hukommelsesmæssigt) at behandle disse arrays end at bruge iterator -metoderne ovenfor.

Et tilfælde, hvor det er acceptabelt at arbejde med disse arrays, er, når du skal slette elementer fra ordbogen, når du støder på uønskede elementer. Arbejde med en iterator under ændring af ordbogen kan forårsage en RuntimeError.

  • Metoden varer () returnerer en række nøgleværdipupler. Du kan gentage disse nøgleværdipar som vist: | _+_ |
  • Hent alle nøglerne i ordbogen ved hjælp af metoden nøgler () . | _+_ | Brug det returnerede array til at sløjfe over tasterne. | _+_ |
  • På samme måde kan du bruge metoden værdier () for at hente alle værdierne i ordbogen. | _+_ |

Hvordan bruger du Python -ordbøger?

Vi har forsøgt at dække de mest almindelige anvendelsessager til pythonordbøger i denne artikel. Sørg for at tjekke alle vores andre Python -artikler for endnu flere Python -tips. Hvis du har andre anvendelsessager, som du synes skal være inkluderet, bedes du give os besked i kommentarerne herunder!

windows 10 automatisk reparation loop fix

Billedkreditter: viper345/Shutterstock

Del Del Tweet E -mail Sådan får du adgang til Googles indbyggede bobleniveau på Android

Hvis du nogensinde har haft brug for at sikre, at noget er i niveau med en knivspids, kan du nu få et bobleniveau på din telefon på få sekunder.

Læs Næste
Relaterede emner
  • Programmering
  • Python
Om forfatteren Jay Sridhar(17 artikler udgivet) Mere fra Jay Sridhar

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere