Толь бичиг (Dictionary)
Dictionary бол Python-д хамгийн өргөн хэрэглэгддэг өгөгдлийн бүтцүүдийн нэг юм. List шиг олон утга хадгалдаг ч гол ялгаа нь: Dictionary дахь утга бүр key (түлхүүр) -тэй холбогддог. Ингэснээр та дугаарын оронд утгыг нэрээр нь хайж олдог.
Жинхэнэ толь бичигт "нохой" гэсэн үгийг хайхад тайлбар нь гардаг шиг — Dictionary-д key өгвөл value (утга) нь гардаг.
Dictionary үүсгэх
Dictionary-г {} хаалт болон key: value бүтцээр үүсгэнэ:
хэрэглэгч = {
"нэр": "Болд",
"нас": 25,
"хот": "Улаанбаатар"
}
print(хэрэглэгч)
# {'нэр': 'Болд', 'нас': 25, 'хот': 'Улаанбаатар'}
Key нь ихэвчлэн string байдаг ч integer болон бусад өөрчлөгдөхгүй (immutable) төрлүүд ч болно. Value нь дурын төрлийн өгөгдөл байж болно — string, number, list, тэр ч байтугай өөр Dictionary.
Утга унших ба өөрчлөх
Key ашиглан унших
хэрэглэгч = {"нэр": "Сарнай", "нас": 22, "хот": "Дархан"}
print(хэрэглэгч["нэр"]) # Сарнай
print(хэрэглэгч["нас"]) # 22
Байхгүй key ашиглавал KeyError алдаа гарна. Аюулгүй уншихад .get() method ашиглана:
print(хэрэглэгч.get("имэйл")) # None — алдаагүй
print(хэрэглэгч.get("имэйл", "байхгүй")) # байхгүй — default утга
Утга нэмэх ба өөрчлөх
хэрэглэгч = {"нэр": "Төгс"}
# Шинэ key нэмэх
хэрэглэгч["имэйл"] = "tugs@example.mn"
# Байгаа утгыг өөрчлөх
хэрэглэгч["нэр"] = "Төгсөө"
print(хэрэглэгч)
# {'нэр': 'Төгсөө', 'имэйл': 'tugs@example.mn'}
Устгах
хэрэглэгч = {"нэр": "Болд", "нас": 25, "хот": "УБ"}
del хэрэглэгч["хот"] # key устгана
нас = хэрэглэгч.pop("нас") # устгаж, утгыг буцаана
print(нас) # 25
print(хэрэглэгч) # {'нэр': 'Болд'}
Dictionary-н чухал method-ууд
| Method | Тайлбар |
| ------------- | ---------------------------------------- |
| .keys() | Бүх key-г буцаана |
| .values() | Бүх value-г буцаана |
| .items() | Key-value хосыг tuple-ийн жагсаалтаар буцаана |
| .get(k, d) | Key байвал утгыг, үгүй бол d-г буцаана |
| .pop(k) | Key-г устгаж утгыг буцаана |
| .update(d) | Өөр Dictionary-н утгуудыг нэмэх/덮어씌우기 |
оноо = {"математик": 90, "физик": 85, "химий": 78}
print(оноо.keys()) # dict_keys(['математик', 'физик', 'химий'])
print(оноо.values()) # dict_values([90, 85, 78])
print(оноо.items()) # dict_items([('математик', 90), ...])
Dictionary дээр давталт
.items() ашиглан key ба value-г зэрэг авах нь хамгийн түгээмэл хэлбэр:
оноо = {"математик": 90, "физик": 85, "химий": 78}
for хичээл, дүн in оноо.items():
print(f"{хичээл}: {дүн} оноо")
# математик: 90 оноо
# физик: 85 оноо
# химий: 78 оноо
Зөвхөн key эсвэл зөвхөн value дээр давтах:
for хичээл in оноо.keys():
print(хичээл)
for дүн in оноо.values():
print(дүн)
Nested Dictionary
Dictionary дотор Dictionary байж болно. Энэ нь бодит ертөнцийн өгөгдлийг загварчлахад маш хэрэгтэй:
сурагчид = {
"Болд": {"нас": 20, "оноо": 95},
"Сарнай": {"нас": 21, "оноо": 88},
}
print(сурагчид["Болд"]["оноо"]) # 95
print(сурагчид["Сарнай"]["нас"]) # 21
API-с ирсэн JSON өгөгдөл, тохиргооны файлууд, хэрэглэгчийн мэдээлэл — бүгд Dictionary хэлбэрт байдаг тул энэ ойлголт маш практик юм.
Key байгаа эсэхийг шалгах
хэрэглэгч = {"нэр": "Болд", "нас": 25}
if "нэр" in хэрэглэгч:
print("Нэр олдлоо:", хэрэглэгч["нэр"])
if "имэйл" not in хэрэглэгч:
print("Имэйл бүртгэлгүй байна")
Дараагийн хичээлд:
Set (Олонлог) өгөгдлийн бүтцийг судална — давтагдахгүй өвөрмөц утгуудын цуглуулга хэрхэн ажилладаг, олонлогийн математик үйлдлүүд (нэгдэл, огтлолцол, зөрүү) Python-д хэрхэн хийгддэгийг үзнэ.