Silmukka sanakirjan läpi Pythonissa

Aloita suorimmalla kuviolla: iteroi avain -arvoparit käyttämällä sanakirjanäkymäobjekteja dokumentaatiossa. Näkymien avulla voit kulkea avaimet, arvot tai kohteet kopioimatta, ja ne heijastavat automaattisesti taustalla olevaan sanakirjaan.

Menetelmä 1: iteroi avainarvoparitdict.items()

Vaihe 1:Luo tai lataa sanakirja prosessille.

users = {"alice": 3, "bob": 7, "carol": 1}

Vaihe 2:Silmukka avain -arvon yliitems().

for name, score in users.items():
    print(name, score)

Vaihe 3:Korvaa tulostus logiikalla (laske, muunta tai soita sovellusliittymään), kun sekä avain että arvo ovat käytettävissä.

Menetelmä 2: iteraa vain arvotdict.values()

Vaihe 1:Käytä arvonäkymää, kun et tarvitse avaimia.

scores = {"a": 10, "b": 20, "c": 30}

for value in scores.values():
    print(value)

Vaihe 2:Suorita laskelmat, jotka riippuvat vain arvoista (esimerkiksi kokonaismäärät tai kynnysarvot).

Menetelmä 3: ITERATE -näppäimet (oletus) ja käyttöarvot avaimen mukaan

Vaihe 1:Silmukka sanakirjan päälle suoraan saadaksesi avaimet.

inventory = {"apples": 5, "oranges": 2, "bananas": 8}

for item in inventory:
    print(item, inventory[item])

Vaihe 2:Mieluummin tämä, kun tarvitset enimmäkseen avaimia ja luet vain satunnaisesti arvon.

Menetelmä 4: iteroi tietyssä järjestyksessäsorted()

Vaihe 1:Lajittele avaimen mukaan ennustettavissa olevalle siirtymiselle.

prices = {"pear": 1.4, "apple": 0.9, "orange": 1.2}

for k in sorted(prices):
    print(k, prices[k])

Vaihe 2:Lajittele arvon mukaan avaintoiminnon avulla.

for k, v in sorted(prices.items(), key=lambda item: item[1]):
    print(k, v)

Vaihe 3:Käännä järjestys kulkemallareverse=Trueviitteeseen.

for k in sorted(prices, reverse=True):
    print(k, prices[k])

Menetelmä 5: Muokkaa sanakirjaa turvallisesti iteroivan aikana

Vaihe 1:Iteroi staattisen tilannekuvan yli poistaessasi tai lisäämällä kohteita.

# Remove even values safely
data = {"x": 2, "y": 3, "z": 4}

for k, v in list(data.items()):  # snapshot
    if v % 2 == 0:
        del data[k]

print(data)  # {'y': 3}

Vaihe 2:Rakenna uudet merkinnät väliaikaiseen sanaan tai luetteloon, sulaudu sitten silmukan jälkeen koonmuutosvirheiden välttämiseksi.

updates = {}
for k, v in list(data.items()):
    if v < 5:
        updates[f"{k}_small"] = v * 10

data.update(updates)

Vinkki: Live -näkymän iterointi muuttaessa kokoa kerää suorituksen virheen. Tilannekuva (list(d.items())tailist(d)) Vältä tätä ja pitää mutaatiologiikan selkeänä.

Menetelmä 6: Kuluta tuhoavasti kohteitapopitem()(Lifo)

Vaihe 1:Käyttää awhileSilmukka esineiden poistamiseksi ja käsittelemiseksi, kunnes sanakirja on tyhjä.

work = {"t1": "A", "t2": "B", "t3": "C"}

while work:
    key, value = work.popitem()
    # Process and discard
    print("done:", key, value)

Vaihe 2:Valitse tämä malli, kun haluat nimenomaisesti tyhjentää sanakirjan ja vapaan muistin menemällä.

Menetelmä 7: Muuta tai suodata sanakirjan ymmärtämisellä

Vaihe 1:Rakenna muuttunut sanakirja yhdelle passille.

prices = {"apple": 1.00, "orange": 0.80, "banana": 0.50}
discounted = {k: round(v * 0.9, 2) for k, v in prices.items()}
print(discounted)  # {'apple': 0.9, 'orange': 0.72, 'banana': 0.45}

Vaihe 2:Suodata kohteet ehdoilla iteroivan aikana.

cheap = {k: v for k, v in prices.items() if v < 0.9}
print(cheap)  # {'orange': 0.8, 'banana': 0.5}

Menetelmä 8: Käännä useita sanakirjoja yhtenäcollections.ChainMap

Vaihe 1:Yhdistä useita kartoituksia yhdeksi sanakirjan kaltaiseksi näkymäksi.

from collections import ChainMap

defaults = {"color": "blue", "lang": "en"}
overrides = {"lang": "fr"}

cfg = ChainMap(overrides, defaults)
for k, v in cfg.items():
    print(k, v)  # lang fr  |  color blue

Vaihe 2:Lue avaimet ketjussa, kun päivitykset koskevat ensimmäistä kartoitusta; Katso käyttäytymisen ja menetelmien dokumentaatio.

Lue lisää:10 parasta ilmaista offline -sanakirjaohjelmistoa Windows PC: lle

Valitse työhön oikea silmukka

  • Käyttääitems()käsitellä avaimia ja arvoja yhdessä.
  • Käyttäävalues()vain arvolaskelmille.
  • Käytä avainkeskeiseen logiikkaan suoraa avain iteraatiota.
  • Käyttääsorted()Ennustettavissa oleva tilaus ja käännetty tilaus tarvittaessa.
  • Käytä tilannekuvaa taipopitem()Välttää kokovaihtovirheet mutaation aikana.

Muutama pieni kuvio kattaa melkein kaikki tarpeet:items()pariksi käytettäväksi,sorted()tilaus-, tilannekuvia taipopitem()turvallista mutaatiota varten. Pidä silmukot keskittynyt yhteen tavoitteeseen, ja sanakirjakoodisi pysyy nopeasti ja helppo lukea.

Related Posts