Dinamikus programozás szótárakkal
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.