Junior
Python'da lug'at tushunchalari (dict comprehensions) nima?
sobes.tech AI
AIdan javob
Lüğatlar generatori (dict comprehension) — bu, takrorlanadigan ob'ektga asoslangan lug'atlarni yaratish uchun mo'ljallangan ixcham sintaksis. U ifodalar va ixtiyoriy filtrlash yordamida "kalit: qiymat" juftlarini yaratishga imkon beradi.
Sintaksis:
# asosiy sintaksis
dict = {kalit_ifodasi: qiymat_ifodasi for element in iterable}
# shart bilan
dict = {kalit_ifodasi: qiymat_ifodasi for element in iterable if shart}
Misollar:
0 dan 4 gacha bo'lgan sonlarning kvadratlaridan lug'at yaratish:
# kalit - son, qiymat - uning kvadrati
squares = {x: x**2 for x in range(5)}
# squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Faqat juft sonlar uchun lug'at yaratish:
# faqat juft sonlarning kvadratlari lug'ati
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
# even_squares = {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
Kalitlar va qiymatlarni teskari qilish:
original_dict = {'a': 1, 'b': 2, 'c': 3}
# kalitlar va qiymatlar teskari lug'at
inverted_dict = {value: key for key, value in original_dict.items()}
# inverted_dict = {1: 'a', 2: 'b', 3: 'c'}
Afzalliklar:
- Qisqalik: Tengdosh
forsikllaridan ko'ra ixchamroq. - O'qilishi oson: Oddiy transformatsiyalar uchun ko'pincha tushunarliroq kod.
- Samaradorlik: Ba'zi hollarda
forsikllaridan biroz tezroq bo'lishi mumkin.
Kamchiliklar:
- Murakkab holatlar uchun o'qilishi: Juda murakkab mantiq uchun kamroq o'qilishi mumkin.
- Yon ta'sirlar yo'qligi: Lug'at yaratish bilan bog'liq bo'lmagan harakatlar uchun mo'ljallanmagan (masalan, chop etish).