Sobes.tech
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 for sikllaridan ko'ra ixchamroq.
  • O'qilishi oson: Oddiy transformatsiyalar uchun ko'pincha tushunarliroq kod.
  • Samaradorlik: Ba'zi hollarda for sikllaridan 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).