Python / Толь бичиг (Dictionary)

Толь бичиг (Dictionary)

Dictionary бол Python-д хамгийн өргөн хэрэглэгддэг өгөгдлийн бүтцүүдийн нэг юм. List шиг олон утга хадгалдаг ч гол ялгаа нь: Dictionary дахь утга бүр key (түлхүүр) -тэй холбогддог. Ингэснээр та дугаарын оронд утгыг нэрээр нь хайж олдог.

Жинхэнэ толь бичигт "нохой" гэсэн үгийг хайхад тайлбар нь гардаг шиг — Dictionary-д key өгвөл value (утга) нь гардаг.

Dictionary үүсгэх

Dictionary-г {} хаалт болон key: value бүтцээр үүсгэнэ:

python
хэрэглэгч = {
    "нэр": "Болд",
    "нас": 25,
    "хот": "Улаанбаатар"
}

print(хэрэглэгч)
# {'нэр': 'Болд', 'нас': 25, 'хот': 'Улаанбаатар'}

Key нь ихэвчлэн string байдаг ч integer болон бусад өөрчлөгдөхгүй (immutable) төрлүүд ч болно. Value нь дурын төрлийн өгөгдөл байж болно — string, number, list, тэр ч байтугай өөр Dictionary.

Утга унших ба өөрчлөх

Key ашиглан унших

python
хэрэглэгч = {"нэр": "Сарнай", "нас": 22, "хот": "Дархан"}

print(хэрэглэгч["нэр"])   # Сарнай
print(хэрэглэгч["нас"])   # 22

Байхгүй key ашиглавал KeyError алдаа гарна. Аюулгүй уншихад .get() method ашиглана:

python
print(хэрэглэгч.get("имэйл"))           # None — алдаагүй
print(хэрэглэгч.get("имэйл", "байхгүй")) # байхгүй — default утга

Утга нэмэх ба өөрчлөх

python
хэрэглэгч = {"нэр": "Төгс"}

# Шинэ key нэмэх
хэрэглэгч["имэйл"] = "tugs@example.mn"

# Байгаа утгыг өөрчлөх
хэрэглэгч["нэр"] = "Төгсөө"

print(хэрэглэгч)
# {'нэр': 'Төгсөө', 'имэйл': 'tugs@example.mn'}

Устгах

python
хэрэглэгч = {"нэр": "Болд", "нас": 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-н утгуудыг нэмэх/덮어씌우기 |

python
оноо = {"математик": 90, "физик": 85, "химий": 78}

print(оноо.keys())    # dict_keys(['математик', 'физик', 'химий'])
print(оноо.values())  # dict_values([90, 85, 78])
print(оноо.items())   # dict_items([('математик', 90), ...])

Dictionary дээр давталт

.items() ашиглан key ба value-г зэрэг авах нь хамгийн түгээмэл хэлбэр:

python
оноо = {"математик": 90, "физик": 85, "химий": 78}

for хичээл, дүн in оноо.items():
    print(f"{хичээл}: {дүн} оноо")

# математик: 90 оноо
# физик: 85 оноо
# химий: 78 оноо

Зөвхөн key эсвэл зөвхөн value дээр давтах:

python
for хичээл in оноо.keys():
    print(хичээл)

for дүн in оноо.values():
    print(дүн)

Nested Dictionary

Dictionary дотор Dictionary байж болно. Энэ нь бодит ертөнцийн өгөгдлийг загварчлахад маш хэрэгтэй:

python
сурагчид = {
    "Болд": {"нас": 20, "оноо": 95},
    "Сарнай": {"нас": 21, "оноо": 88},
}

print(сурагчид["Болд"]["оноо"])   # 95
print(сурагчид["Сарнай"]["нас"])  # 21

API-с ирсэн JSON өгөгдөл, тохиргооны файлууд, хэрэглэгчийн мэдээлэл — бүгд Dictionary хэлбэрт байдаг тул энэ ойлголт маш практик юм.

Key байгаа эсэхийг шалгах

python
хэрэглэгч = {"нэр": "Болд", "нас": 25}

if "нэр" in хэрэглэгч:
    print("Нэр олдлоо:", хэрэглэгч["нэр"])

if "имэйл" not in хэрэглэгч:
    print("Имэйл бүртгэлгүй байна")

Дараагийн хичээлд:

Set (Олонлог) өгөгдлийн бүтцийг судална — давтагдахгүй өвөрмөц утгуудын цуглуулга хэрхэн ажилладаг, олонлогийн математик үйлдлүүд (нэгдэл, огтлолцол, зөрүү) Python-д хэрхэн хийгддэгийг үзнэ.