English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Python

Управление потоком Python

Функции Python

Типы данных Python

Операции с файлами Python

Объекты и классы Python

Дата и время Python

Продвинутые знания Python

Руководство Python

Разумение словарей в Python

В этом руководстве мы изучим расширение словаря в Python и как использовать его с помощью примеров.

Словарь - это тип данных в Python, который позволяет нам хранить данные вПара ключ/значение. Например:

my_dict = {1: 'apple', 2: 'ball'}

Чтобы узнать больше о них, пожалуйста, посетите:Python словарь

Что такое расширение словаря в Python?

Расширение словаря - это элегантный и краткий способ создания словарей.

Пример 1: расширение словаря

Рассмотрим следующий код:

square_dict = dict()
for num in range(1, 11):
    square_dict[num] = num*num
print(square_dict)

Теперь давайте используем функцию расширения словаря, чтобы создать словарь в предыдущем примере.

# Пример расширения словаря
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)

Вывод этих двух программ будет одинаковым.

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

В этих двух программах мы оба создали square_dict сКвадратные ключи/значениянашего словаря.

Но использование расширения словаря позволяет намв одной строкеСозданиеСловарь.

Использование расширения словаря

Из примеров выше мы можем видеть, что расширение словаря должно быть написано в определенном формате.

Самый минимальный синтаксис расширения словаря:

dictionary = {key: value for vars in iterable}

Давайте сравним эту грамматику с примером расширения словаря из предыдущего примера.

Теперь, давайте посмотрим, как использовать данные из другого словаря для расширения словаря.

Пример 3: как использовать расширение словаря

#цена товара в долларах
old_price = {'мilk': 1.02, 'coffee': 2.5, 'bread': 2.5}
dollar_to_pound = 0.76
new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()}
print(new_price)

Результаты вывода

{'milk': 0.7752, 'coffee': 1.9, 'bread': 1.9}

Здесь мы можем видеть, что мы получаем цены на товары в долларах и преобразуем их в фунты стерлингов. Понимание словаря делает эту задачу более простой и короткой.

Условия понимания словаря

Мы можем еще больше настроить понимание словаря, добавив условия. Давайте посмотрим на пример.

Пример 4: понимание словаря с условиями if

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0}
print(even_dict)

Результаты вывода

{'jack': 38, 'michael': 48}

Мы можем видеть, что из-за подусловий в понимании словаря с условиями if добавлены только проекты с даже значениями.

Пример 5: понимание словаря с несколькими условиями if

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict = {k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40}
print(new_dict)

Результаты вывода

{'john': 33}

В этом случае в новый словарь добавлены только的项目 с нечетными значениями, которые меньше 40.

Это потому, что в понимании словаря с условиями if есть несколько подусловий. Они эквивалентны операциям and и должны выполняться одновременно.

Пример 6: понимание словаря с условиями if-else

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict_1 = {k: ('old' if v > 40 else 'young')
    for (k, v) in original_dict.items()}
print(new_dict_1)

Результаты вывода

{'jack': 'young', 'michael': 'old', 'guido': 'old', 'john': 'young'}

В этом случае новый словарь будет создан с помощью понимания подсловаря.

Товары с ценностью не менее 40 имеют значение «old», а другие товары имеют значение «young».

Вложенное понимание словаря

Мы можем добавить понимание словаря к пониманию словаря, чтобы создать вложенный словарь. Давайте посмотрим на пример.

Пример 7: Вложенный словарь с двумя разъяснениями словарей

dictionary = {
    k1: {k2: k1 * k2 for k2 in range(1, 6)} for k1 in range(2, 5)
}
print(dictionary)

Результаты вывода

{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}, 
3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15},
4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20}

Как вы видите, мы построили таблицу умножения для чисел от 2 до 4 в вложенном словаре.

Когда используется разъяснение вложенных словарей, Python сначала начинает с внешнего цикла, а затем переходит к внутреннему циклу.

Таким образом, вышеуказанный код эквивалентен:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = {k2: k1 * k2 for k2 in range(1, 6)}
print(dictionary)

Это можно еще больше расширить:

dictionary = dict()
for k1 in range(11, 16):
    dictionary[k1] = dict()
    for k2 in range(1, 6):
        dictionary[k1][k2] = k1 * k2
print(dictionary)

Эти три программы дают одинаковый результат.

Преимущества использования разъяснения словарей

Как мы видим, разъяснение словарей大大 сокращает процесс инициализации словарей. Это делает код более pythonic.

Использование разъяснения словарей в нашем коде может缩短 количество строк, сохраняя при этом целостность логики.

Внимание при использовании разъяснения словарей

Хотя разъяснение словарей очень полезно для написания легко читаемого и изящного кода, оно не всегда является правильным выбором.

Используйте их как:

  • Иногда это может замедлить выполнение кода и занимать больше памяти.

  • Это также снизит читаемость кода.

Мы не должны пытаться добавить сложную логику или的大量 словарных разъяснений только для того, чтобы сделать код однострочным. В таких случаях лучше выбрать другие методы, например, циклы.