Junior
Python'dagi lug'atlarda kalitlar qanday bo'lishi mumkin?
sobes.tech AI
AIdan javob
Python lug'atlaridagi kalitlar har qanday o'zgarmas (hashable) ob'ekt bo'lishi mumkin.
O'zgarmas ma'lumot turlari quyidagilarni o'z ichiga oladi:
- Butun sonlar (
int) - O'nlik sonlar (
float) - Matn satrlari (
str) - Faqat o'zgarmas elementlarni o'z ichiga olgan tuple (
tuple) - Boolean qiymatlar (
bool) - NoneType (
None) - Frozenset (
frozenset) faqat o'zgarmas elementlarni o'z ichiga oladi
Ruxsat etilgan kalitlar misollari:
# Ruxsat etilgan kalitlar
mymap = {
1: "bir",
3.14: "pi",
"kalit": "qiymat",
(1, 2): "tuples",
True: "haqiqat",
None: "yo'q",
frozenset({1, 2}): "o'zgarmas to'plam"
}
O'zgarmas obyektlarning hash qiymati bor va bu hash qiymati tezkor qidiruv uchun ishlatiladi.
O'zgarmas bo'lmagan ma'lumot turlari, masalan, ro'yxatlar (list), to'plamlar (set) va boshqa lug'atlar (dict), kalit sifatida ishlatilolmaydi, chunki ularning mazmuni o'zgarishi mumkin, bu hashning yaxlitligini buzadi.
Noto'g'ri kalitlar misollari:
# Noto'g'ri kalitlar (TypeError chiqaradi)
# mymap = {
# [1, 2]: "ro'yxat",
# {1, 2}: "to'plam",
# {"a": 1}: "boshqa lug'at"
# }