Dinamikus programozás szótárakkal

Befejeződött

A programban különböző számításokat szeretne végezni, például a holdak számának összegzését. Emellett a fejlettebb programozás során azt is tapasztalhatja, hogy az ilyen típusú adatokat fájlból vagy adatbázisból tölti be ahelyett, hogy közvetlenül a Pythonba kódolt volna.

Ezeknek a forgatókönyveknek a támogatásához a Python lehetővé teszi, hogy a szótárban lévő kulcsokat és értékeket listaként kezelje. Dinamikusan meghatározhatja a kulcsokat és az értékeket, és különböző számításokat végezhet.

Képzeljen el egy szótárt, amely havi csapadékmennyiségeket tárol. Valószínűleg minden hónaphoz és a kapcsolódó csapadékhoz kulcsok tartoznak. A teljes csapadékmennyiséget össze szeretné adni, és az egyes kulcsok használatával a művelet végrehajtásához szükséges kód írása meglehetősen fárasztó lenne.

Az összes kulcs és érték lekérése

A keys() metódus egy listaobjektumot ad vissza, amely tartalmazza az összes kulcsot. Ezzel a módszerrel a szótár összes elemén végigvezetheti azokat.

Tegyük fel, hogy a következő szótára van, amely az elmúlt három hónap csapadékát tárolja.

rainfall = {
    'october': 3.5,
    'november': 4.2,
    'december': 2.1
}

Tegyük fel, hogy meg szeretné jeleníteni az összes csapadék listáját. Minden hónap nevét beírhatja, de ez fárasztó lenne.


for key in rainfall.keys():
    print(f'{key}: {rainfall[key]}cm')
october: 3.5cm
november: 4.2cm
december: 2.1cm

Megjegyzés:

Továbbra is használhat szögletes zárójeleket ([ ]) változónévvel, nem pedig a rögzített sztringkonstanst.

Annak megállapítása, hogy létezik-e kulcs egy szótárban

Amikor módosít egy értéket egy szótárban, a Python felülírja a meglévő értéket, vagy létrehoz egy újat, ha a kulcs nem létezik. Ha felülírás helyett egy értéket szeretne hozzáadni, ellenőrizheti, hogy a kulcs létezik-e a használatával in. Ha például decemberhez szeretne hozzáadni egy értéket, vagy ha nem létezik, hozzon létre egy újat, használja az alábbi lehetőségeket:

if 'december' in rainfall:
    rainfall['december'] = rainfall['december'] + 1
else:
    rainfall['december'] = 1

# Because december exists, the value will be 3.1

Az összes érték lekérése

keys()values() Ehhez hasonlóan a szótár összes értékének listáját adja vissza a megfelelő kulcsok nélkül. values() Hasznos lehet, ha a kulcsot címkézési célokra használja, például az előző példában, amelyben a kulcsok a hónap neve. A teljes csapadékmennyiség meghatározásához használhatja values() :

total_rainfall = 0
for value in rainfall.values():
    total_rainfall = total_rainfall + value

print(f'There was {total_rainfall}cm in the last quarter.')
There was 10.8cm in the last quarter.