Dicti-ga töötamise funktsioonid¶
dict¶
Nagu oleme juba teadlikud, siis sõnastik on selline andmestruktuur mis hoiab endas võti-väärtus paare. Kusjuures võti peab olema immutable andmetüüpi (string, int, float, tuple) ja unikaalne, võtile vastav väärtus võib oli igat andmetüüpi.
dict.keys()¶
Esimene dict-ga töötamiseks kasulik abifunktsioon on .keys(). .keys() tagastab itereeriva objekti, mis sisaldab kõiki sõnastiku võtmeid nende lisamise järjekorras. .keys() funktsiooni jooksutamisel tagastatavas itereerivas objektis (võib mõelda selle kohta ka kui list) on kõik andmed kindlalt unikaalsed!
numbers = {1: 'one', 2: 'two', 3: 'three'}
# extracts the keys of the dictionary
dictionary_keys = numbers.keys()
print(dictionary_keys)
# Output: dict_keys([1, 2, 3])
Saades sõnastiku võtmed kätte võime neid itereerida tsüklis.
numbers = {2: "two", 1: "one", 3: "three"}
dictionary_keys = numbers.keys()
for k in dictionary_keys:
print(k)
# Output:
# 2
# 1
# 3
.keys() tagastab tegelikult viite (referentsi) objektile, mis hoiab sõnastiku võtmeid, ehk, sõnastikule uute võtmete lisamisel ei pea uuesti välja kutsuma .keys(), et saada võtmed kätte.
employee = {'name': 'Phill', 'age': 22}
dictionary_keys = employee.keys()
print('Before dictionary update:', dictionary_keys)
# dict_keys(['name', 'age'])
# adds an element to the dictionary
employee.update({'salary': 3500.0})
print('After dictionary update:', dictionary_keys)
# dict_keys(['name', 'age', 'salary'])
dict.values()¶
Kui dict.keys() tagastas sõnastiku võtmeid, siis .values() meetod tagastab listi dicti väärtustest. See on kasulik abifunktsioon, mida võib kasutada nt kui on vaja läbi käia sõnastikus olevad väärtused hoolimata võtmetest, nt kui väärtused on samuti dictid või klassid siis võib see olla vägagi kasulik abivahend. .values() meetodi jooksutamine tagastab itereeriva objekti/list, kus andmed ei pruugi olla unikaalsed ning täiesti võivad korduda! Samuti, kuna sõnastikus väärtused võivad olla suvalist andmetüüpi, siis tagastatav list võib ka sisaldada erinevaid andmetüüpe
numbers = {1: "one", 2: "three", 3: "two", 4: "one", extra: 5}
print(numbers.values())
# dict_values(["one", "two", 5, "three", "one"])
Pange tähele, et väärtused tagastatavas listis ei pruugi olla samas järjekorras kuidas nad olid lisatud dicti.
.values() tagastab tegelikult viite (referentsi) objektile, mis hoiab sõnastiku väärtusi, ehk, sõnastikule uute väärtuste lisamisel samuti ka olemasolevate väärtuse muutmisel ei pea uuesti välja kutsuma .values(), et saada väärtused kätte.
sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
values = sales.values()
print('Original items:', values)
# Original items: dict_values([2, 4, 3])
# delete an item from dictionary
del[sales['apple']]
print('Updated items:', values)
# Updated items: dict_values([4, 3])
numbers = { 1: "one", 2: "two", 3: "four" }
values = numbers.values()
print("original numbers: ", values)
# original numbers: dict_values(["one", "four", "two"])
# update a dict value
numbers[3] = "three"
print("updated numbers: ", values)
# updated numbers: dict_values(["three", "one", "two"])
dict.items()¶
Sõnastiku abifunktsioon .items() tagastab itereeriva objekti, mis hoiab võti-väärtus paare ennikute kujul. Tagastatavast itereerivast objektis võib samuti ka mõelda, kui listist, kuid seekord on see list mis hoiab võti-väärtus paaride ennikud. .items() abifunktsioon tagastab võti-väärtus paare nende lisamise järjekorras (täpsemalt võtme lisamise järjekorras, sest juba ainuüksi võtme lisamine eeldab ka väärtuse lisamist ning väärtus None on ka lubatud)
numbers = {1: "one", 2: "two", 3: "three"}
print(numbers.items())
# dict_items([(1, "one"), (2, "two"), (3, "three")])
.items() tagastab tegelikult viite (referentsi) objektile, mis hoiab sõnastiku võti-väärtus paare, ehk, sõnastikule uute võtmete lisamisel samuti ka olemasolevate väärtuse muutmisel ei pea uuesti välja kutsuma .items(), et saada uuendatud paarid kätte.