Sobes.tech
Junior

Čo sú comprehensions slovníkov v Pythone?

sobes.tech AI

Odpoveď od AI

Generator slovníkov (dict comprehension) je kompaktná syntax na vytváranie slovníkov založená na iterovateľnom objekte. Umožňuje generovať páry "kľúč: hodnota" pomocou výrazov a voliteľného filtrovania.

Syntax:

# základná syntax

dict = {výraz_kľúča: výraz_hodnoty for prvok in iterable}

# s podmienkou

dict = {výraz_kľúča: výraz_hodnoty for prvok in iterable if podmienka}

Príklady:

Vytvorenie slovníka štvorcov čísel od 0 do 4:

# slovník, kde je kľúč číslo a hodnota jeho štvorc
squares = {x: x**2 for x in range(5)}
# squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Vytvorenie slovníka len pre párne čísla:

# slovník s štvorcami len párnych čísel
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}

Obrátenie kľúčov a hodnôt:

original_dict = {'a': 1, 'b': 2, 'c': 3}
# slovník s obrátenými kľúčmi a hodnotami
inverted_dict = {value: key for key, value in original_dict.items()}
# inverted_dict = {1: 'a', 2: 'b', 3: 'c'}

Výhody:

  • Kompaktnosť: Kompaktnejšie ako ekvivalentné for slučky.
  • Čitateľnosť: Častejšie jasnejší kód pre jednoduché transformácie.
  • Efektívnosť: Môže byť o niečo rýchlejší ako for slučky v niektorých prípadoch.

Nevýhody:

  • Čitateľnosť pri zložitých prípadoch: Pre veľmi zložitú logiku môže byť menej čitateľný.
  • Chýbajúce vedľajšie efekty: Nie je určený na vykonávanie akcií, ktoré nesúvisia s vytváraním slovníka (napríklad tlač).