Підручник із розуміння словника Python

Мова програмування Python пропонує унікальний набір інструментів, який робить кодування не тільки цікавим, але й прискорює ваш прогрес як програміста. Завдяки простоті використання Python став популярною мовою для багатьох галузей, від веб-розробки та науки про дані до фінансів тощо.

Підручник із розуміння словника Python

Розуміння словника Python є важливим інструментом, який дозволяє генерувати словники динамічно шляхом повторення існуючих ітерованих структур даних або словників для створення нових. Ви можете думати, що розуміння словника схоже на розуміння списку, але з дещо іншим варіантом використання.

Ознайомившись із розуміннями, ви побачите, що вони можуть значно покращити код, сприяючи зрозумілості та усуваючи потребу в довгих повторюваних циклах.

Якщо ви новачок у , можливо, ви не стикалися з розумінням або не використовували його у своєму коді. Перш ніж заглибитися в синтаксис, давайте розглянемо головне питання: що таке розуміння словника Python?

Зміст

Що таке розуміння словника Python?

Python Dictionary Comprehension — це стислий спосіб створення словників за допомогою простих виразів. Це дозволяє створювати нові словники без необхідності використовувати for-loops.e

Давайте розглянемо приклад розуміння. Припустимо, у вас є два списки, один із яких містить ключі, а інший — значення:

keys = ['a', 'b', 'c']
values = [1, 2, 3]

Використовуючи розуміння словника, ви можете створити новий словник, перебираючи два списки та комбінуючи відповідні пари ключ-значення:

my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)

Результатом буде:

{'a': 1, 'b': 2, 'c': 3}

Підручник із розуміння словника Python

Наведений вище приклад повинен дати уявлення про те, що таке розуміння. Щоб ще більше допомогти вам утвердити концепцію, давайте розберемося з синтаксисом словникового розуміння в Python.

Розуміння синтаксису розуміння словника

Синтаксис для розуміння словника простий, але потужний. Вони пропонують лаконічний . Крім того, вони дотримуються подібного синтаксису для розуміння списку, але використовують фігурні дужки {} та пару ключ-значення, розділену двокрапкою.

Основна структура така:

{key: value for (key, value) in iterable}

У цьому синтаксисі ключ і значення представляють вирази, які використовуються для створення ключів і значень результуючого словника. Ітерація надає джерело даних, які використовуються для створення пар ключ-значення.

Цей синтаксис було представлено в Python 3 і перенесено до Python 2.7, забезпечуючи широку сумісність між версіями Python.

Наприклад, щоб створити словник, який зіставляє числа від 0 до 4 з їхніми квадратами за допомогою розуміння словника, ви можете використати такий код Python:

square_dict = {x: x**2 for x in range(5)}

Це призведе до такого словника:

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Підручник із розуміння словника Python

Що робити, якщо ви хочете перебирати дві змінні одночасно? Ви можете досягти цього за допомогою розуміння словника за допомогою функції zip(), щоб створити словник із двох ітерацій, один з яких представляє ключі, а інший — значення. Ось приклад:

keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3, 4, 5]
my_dict = {k: v for k, v in zip(keys, values)}

Отриманий словник буде таким:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

Підручник із розуміння словника Python

Розуміння словника також дозволяє додати необов’язковий оператор if у кінці розуміння, щоб застосувати умовний фільтр до включених елементів.

Наприклад, ви можете створити словник лише з парними числами та їхніми квадратами за допомогою розуміння словника:

even_square_dict = {x: x**2 for x in range(10) if x % 2 == 0}

Це призводить до:

{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Підручник із розуміння словника Python

Тепер, коли ви трохи знайомі з синтаксисом розуміння, давайте подивимося на деякі приклади розуміння.

Приклади розуміння словника

Завдяки своєму потужному та елегантному синтаксису розуміння словника знаходить різноманітні варіанти використання. Вони можуть заощадити ваш час і зробити ваш код більш читабельним.

Відображення чисел у їхніх квадратах

Розглянемо простий приклад, де ви хочете створити словник, який зіставляє числа з їхніми квадратами за допомогою розуміння словника Python:

squares = {x: x**2 for x in range(1, 6)}
print(squares)

Це виведе:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Наведений вище код виконує ту саму роботу, що й виконання циклу шість разів і зведення кожного числа у квадрат. Наведений нижче код демонструє запуск циклу для отримання квадратів чисел:

squares = {}
for x in range(1, 6):
    squares[x] = x ** 2

print(squares)

На цьому етапі ви можете задатися питанням, навіщо використовувати розуміння, коли можна використовувати цикли. Основним правилом програмування є написання компактного та ефективного коду.

Ви також можете застосувати умови до свого розуміння. Наприклад, ви можете створити словник, який містить лише парні числа та їх квадрати:

even_squares = {x: x**2 for x in range(1, 6) if x % 2 == 0}
print(even_squares)

Запуск цього коду створить новий словник, подібний до наступного:

{2: 4, 4: 16}

Зворотні ключі та значення

Ви також можете легко перевертати елементи словника за допомогою розуміння словника в Python.

Наступний код демонструє, як змінити ключі та значення існуючого словника за допомогою розуміння словника:

original_dict = {"one": 1, "two": 2, "three": 3, "four": 4}
reversed_dict = {v: k for k, v in original_dict.items()}
print(reversed_dict)

Наведене вище розуміння словника (або розуміння дикту) надрукує наступне:

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

Підручник із розуміння словника Python

Щоб краще зрозуміти, що таке словники та як їх можна використовувати в різних випадках, перегляньте наведене нижче відео:

Надані приклади служать міцною основою для використання розуміння словника у ваших проектах Python.

Крім того, розуміння словника можна додатково оптимізувати, дозволяючи одному рядку коду виконувати складні завдання, які можуть споживати більше часу та пам’яті з циклами.

3 основні переваги розуміння словника

Ви відчули елегантність розуміння словника завдяки наданим прикладам. Крім читабельності, розуміння пропонує кілька переваг, включаючи ефективність, під час роботи з ефективною структурою хеш-таблиці ключ/значення Python, що називається розумінням dict .

1. Створення зрозумілого та простого коду

Розуміння дозволяє створювати нові словники без особливих зусиль і в зрозумілій манері. Вони роблять ваш код більш пітонічним, ніж традиційні цикли.

2. Краща продуктивність зі стилем

Розуміння не тільки елегантне, але й ефективне. Вони часто працюють швидше, ніж цикли for, оскільки використовують один вираз. Python оптимізує цей тип коду, усуваючи необхідність багаторазового виклику конструктора словника або використання методу update().

3. Легка фільтрація та перетворення даних

Ще однією перевагою розуміння словника є його простота фільтрації та перетворення даних. Наприклад, ви можете створити новий словник із наявного, застосувавши умову або змінивши ключі чи значення.

Дуже важливо розуміти, коли використовувати розуміння словників у Python, оскільки вони можуть швидко стати складними та складнішими для читання та запису. Тепер давайте дослідимо деякі випадки використання для розуміння словника в Python.

3 приклади використання словникового розуміння

Розуміння корисно в таких 3 сценаріях:

1. При створенні словника з двох списків

{key:value for key, value in zip(list1, list2)}

2. Під час фільтрації словника на основі значення

{k: v for k, v in original_dict.items() if v > threshold}

3. При перетворенні ключів або значень

{k.upper(): v * 2 for k, v in original_dict.items()}

Важливо пам’ятати, що хоча розуміння може зробити ваш код більш елегантним і ефективним, його також може стати важко читати, якщо він надто складний.

Давайте розглянемо деякі з найпоширеніших пасток під час використання словникового розуміння.

Підводні камені розуміння словника

Розуміння словника приносить елегантність і ефективність, але також пов’язане з труднощами. Ми обговоримо типові підводні камені, пов’язані з читабельністю, складністю та продуктивністю великих наборів даних.

Баланс між складністю та читабельністю

Складне розуміння словника може бути важко читати. Надайте пріоритет читабельності коду, особливо коли працюєте з іншими. У деяких випадках традиційні цикли for можуть бути простішими та зручнішими в обслуговуванні.

Продуктивність із великими наборами даних

Для великих наборів даних розуміння словника не завжди може бути оптимальним. Відповідно до Stack Overflow , вбудований конструктор dict() може перевершити розуміння словника з численними парами ключ-значення через циклічність у C.

Порівняння з іншими методами

У цьому розділі ми порівняємо розуміння словника з двома альтернативними методами створення словників у Python: циклами for і лямбда-функціями.

Для циклу

Використання циклу for для створення словника передбачає ініціалізацію порожнього словника, а потім ітерацію по потрібній дійсній парі ключ-значення, додаючи кожну пару до словника. Це більш докладний метод порівняно з розумінням за словником.

Нижче наведено приклад створення словника за допомогою циклів for:

dictionary = {}
for key, value in zip(keys, values):
    dictionary[key] = value

І навпаки, розуміння словника дозволяє досягти того самого результату в одному рядку:

dictionary = {key: value for key, value in zip(keys, values)}

Підручник із розуміння словника Python

Як бачите, розуміння забезпечує стислий і більш читабельний спосіб створення словників у Python.

Лямбда-функції

Ми також можемо використовувати функції Lambda для створення словників. Лямбда-функції — це спосіб створення невеликих анонімних функцій у Python. Їх можна використовувати в поєднанні з функцією map() для створення словника.

Давайте розглянемо приклад функцій Lambda для створення словників:

keys = ['a', 'b', 'c']
values = [1, 2, 3]

key_value_pairs = map(lambda key, value: (key, value), keys, values)
dictionary = dict(key_value_pairs)

Для порівняння, ось як можна створити той самий словник за допомогою розуміння:

dictionary = {key: value for key, value in zip(keys, values)}

Підручник із розуміння словника Python

Знову ж таки, розуміння словника надає стислу та більш читабельну альтернативу створенню словників за допомогою лямбда-функцій і функції map().

Найкращі методи розуміння словника

Використовуючи розуміння в Python, важливо дотримуватися найкращих практик, щоб покращити читабельність, зручність обслуговування та ефективність. Нижче наведено кілька практичних порад.

1. Дотримуйтесь простого розуміння словника

Розуміння словника є потужним, але воно має бути ясним і лаконічним. Якщо ваше розуміння стає надто складним або охоплює кілька рядків, подумайте про використання традиційного циклу for. Це допомагає зрозуміти код, особливо для інших або під час повторного перегляду вашої роботи пізніше.

2. Використовуйте вбудовані функції

Python пропонує такі вбудовані функції, як zip() і enumerate(), які допомагають створювати розуміння. Використовуйте ці функції, щоб оптимізувати свій код і зробити його більш читабельним.

Наприклад, використання zip() для об’єднання двох списків і створення словника призводить до стислого та чистого коду, подібного до цього:

{key: value for key, value in zip(keys, values)}

3. Розумно використовуйте умовні оператори

Включайте умовні твердження у своє розуміння, коли це необхідно, але не зловживайте ними. Вони можуть допомогти відфільтрувати або змінити отриманий словник, але занадто багато вкладених умов може ускладнити читання коду. Простий приклад використання умовного оператора:

{x: x**2 for x in range(10) if x % 2 == 0}

4. Пам’ятайте про розуміння вкладеного словника

Розуміння вкладеного словника може створювати словники з вкладеними структурами. Однак, як і умовні оператори, надлишок вкладеного словника може ускладнити розшифровку коду. Уникайте переходу за межі двох рівнів вкладеності у своєму розумінні вкладеного словника.

Іноді вам може знадобитися використовувати вкладене розуміння словника всередині циклів, щоб досягти бажаної ефективності.

Наше останнє слово

Наразі ви освоїли розуміння словника в Python. Ця елегантна та ефективна техніка допомагає створювати словники шляхом ітерації через ітерації або використання умов. Розуміння оптимізує ваш код, підвищуючи читабельність і зручність обслуговування.

Створювати нові словники легко для розуміння, заощаджуючи час і зусилля порівняно з традиційними циклами for. Вони корисні в реальних програмах, таких як обробка даних, відображення та перетворення.

Якщо ви хочете вдосконалити свої знання Python і стати справжнім професіоналом, пройдіть наш курс Python і подивіться, як ми створюємо найкращих у світі користувачів Python.


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.