Sobes.tech
Junior

Генераторҳои луғот (dict comprehensions) дар Python чист?

sobes.tech AI

Ҷавоб аз AI

Генератор на речници (dict comprehension) — това е компактна синтаксис за създаване на речници, базирана на итеративен обект. Позволява генериране на двойки "ключ: стойност" чрез изрази и опционално филтриране.

Синтаксис:

# основен синтаксис
dict = {израз_ключ: израз_стойност for елемент in iterable}

# с условие
dict = {израз_ключ: израз_стойност for елемент in iterable if условие}

Примери:

Създаване на речник с квадрати на числата от 0 до 4:

# речник, където ключът е числото, а стойността — неговият квадрат
squares = {x: x**2 for x in range(5)}
# squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Създаване на речник само за четни числа:

# речник с квадрати само на четни числа
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}

Обратна замяна на ключове и стойности:

original_dict = {'a': 1, 'b': 2, 'c': 3}
# речник с обърнати ключове и стойности
inverted_dict = {value: key for key, value in original_dict.items()}
# inverted_dict = {1: 'a', 2: 'b', 3: 'c'}

Предимства:

  • Краткост: По-компактен от еквивалентните цикли for.
  • Четливост: Често по-ясен код за прости преобразувания.
  • Ефективност: Може да е малко по-бърз от цикли for в някои случаи.

Недостатъци:

  • Четливост за сложни случаи: За много сложна логика може да стане по-малко четлив.
  • Липса на странични ефекти: Не е предназначен за изпълнение на действия, които не са свързани с създаването на речник (например, печатане).