Sanakirjat ja Sanakirjamenetelmät
Sanakirjat ovat kenties monipuolisin Pythonin tietorakenne. Ne tallentavat tietoa avain-arvo-pareina ja ovat välttämättömiä tilanteissa, joissa tietoa täytyy hakea nopeasti ja muutoksia tehdään usein.
Ruokakauppaskenaariossamme sanakirjat voisivat tehokkaasti hallita toimittajatietoja, jolloin jokaiseen toimittajaan pääsee käsiksi nimen tai tunnisteen perusteella ilman tarvetta etsiä listasta.
Katso, kuinka Alex havainnollistaa sanakirjojen käyttöä ruokakaupassamme:
Luominen
Sanakirjat luodaan sulkemalla pilkuilla erotetut avain-arvo-parit kaarisulkeisiin {}
.
python
Järjestys
Sanakirjat säilyttävät alkioiden lisäysjärjestyksen, mutta on tärkeää huomata, että toiminnot tehdään yleensä avainten perusteella, ei sijainnin.
Muokattavuus
Sanakirjat ovat muokattavia, joten voit lisätä, päivittää tai poistaa avain-arvo-pareja sanakirjan luomisen jälkeen;
Huom
Vaikka sanakirjoihin voi tallentaa useita arvoja, jokaisen avaimen täytyy olla yksilöllinen sanakirjassa. Jos avain toistetaan määrittelyn aikana, uusin arvo korvaa aiemman, jolloin kullakin avaimella on vain yksi arvo.
Esimerkit
Tarkastellaan yksinkertaista sanakirjaa. Indeksinumeroiden sijaan sanakirjan alkioihin pääsee käsiksi avainten avulla, jotka tässä tapauksessa ovat ruokatarvikkeiden nimet.
# Dictionary creation groceryItems = { "Milk": 3.49, "Eggs": 2.99, "Bread": 1.99, "Apples": 0.99 } # Extracting dictionary elements by their keys print("Price of Milk:", groceryItems["Milk"]) print("Price of Bread:", groceryItems["Bread"])
Pythonin sanakirjat ovat joustavia tallennettavien tietotyyppien suhteen.
Ainoa rajoitus on, että avainten tulee olla muuttumattomia (immutable) tyyppejä (kuten strings
, numbers
tai tuples
, jotka sisältävät vain muuttumattomia alkioita). Tämä varmistaa, että avain pysyy muuttumattomana.
Sen sijaan sanakirjan arvot voivat olla mitä tahansa tyyppiä ja voivat sisältää myös muuttuvia (mutable) tyyppejä, kuten listoja tai muita sanakirjoja.
Esimerkiksi:
# A dictionary with various types of keys and values store_info = { "Store Name": "Grocery Galore", # String key and string value 42: "Inventory Count", # Integer key and string value ("Bread", "Milk"): [2.99, 1.59] # Tuple key and list value (prices of bread and milk) } # Extracting dictionary element (list) by its key (tuple) print("Data under key ('Bread', 'Milk'):", store_info[("Bread", "Milk")])
Sanakirjan metodit
Sanakirjat tarjoavat joukon toimintoja ja metodeja, jotka mahdollistavat tehokkaan tietojen käsittelyn. Tässä joitakin yleisimmin käytettyjä metodeja:
get()
: hakee arvon määritetylle avaimelle, ja jos avainta ei löydy, palauttaaNone
. Tämä eroaa hakasulkeiden käytöstä (esim.grocery_items["Milk"]
), joka aiheuttaa virheen, jos avainta ei ole;update()
: päivittää sanakirjan toisesta sanakirjasta tai avain-arvoparien iteroitavasta, korvaten olemassa olevat avaimet;pop()
: poistaa määritetyn avaimen ja palauttaa siihen liittyvän arvon.
Huom
Pythonissa
None
on erityisarvo, joka tarkoittaa "ei mitään" tai "ei arvoa", ja sitä käytetään usein osoittamaan, että jokin on tyhjä tai tulosta ei ole.
Esimerkkisovellus
Kuvittele, että sinun täytyy päivittää sanakirja, joka sisältää ruokakauppasi varaston. Näin voit tehdä sen sanakirjan metodeilla:
# Dictionary for a grocery store inventory inventory = { "Apples": 30, "Oranges": 18, "Bananas": 45 } # Get the count of Oranges print("Count of Oranges:", inventory.get("Oranges")) # Update inventory by adding a new item inventory.update({"Mangoes": 20}) print("Updated Inventory:", inventory) # You can also add a new item to the end of the dictionary like this inventory["Pineapples"] = 15 print("Updated Inventory:", inventory) # Remove Bananas from the inventory removed_item = inventory.pop("Bananas") print("Removed Item:", removed_item) print("Current Inventory:", inventory)
Swipe to start coding
Hallitse ruokakaupan varastoa käyttämällä sanakirjaa, jossa jokainen tuote on avain-arvo -pari sisältäen tuotteen nimen sekä tiedot (tuotetunnus ja kategoria).
-
Määrittele sanakirja
grocery_inventory
tietojen tallentamiseen:- "Milk": (113, "Dairy")
- "Eggs": (116, "Dairy")
- "Bread": (117, "Bakery")
- "Apples": (141, "Produce")
-
Hae tuotteen
"Bread"
tiedot sanakirjasta ja tallenna ne muuttujaanbread_details
. -
Lisää uusi tuote,
"Cookies"
, tuotetunnuksella143
ja kategoriassa"Bakery"
. -
Poista tuote
"Eggs"
sanakirjasta.
Tulostusvaatimukset
- Tulosta
"Bread"
-tuotteen tiedot:Details of Bread: <$bread_details>
. - Kun
"Cookies"
on lisätty, tulosta päivitetty varasto:Inventory after adding Cookies: <$grocery_inventory>
. - Kun
"Eggs"
on poistettu, tulosta päivitetty varasto:Inventory after removing Eggs: <$grocery_inventory>
.
Ratkaisu
Kiitos palautteestasi!