Работа со словарями. Встроенные функции list(), zip(). Обход словаря. Генераторы словарей. Сортировка. Сочетание словарей с множествами
Содержание
- 1. Встроенная функция list(). Пример применения со словарями
- 2. Встроенная функция zip(). Пример создания словаря
- 3. Обход словаря с помощью цикла for. Пример
- 4. Использование словарей для разреженных структур данных. Пример
- 5. Создание словарей с помощью генераторов словарей. Примеры
- 6. Сортировка словаря. Пример
- 7. Пример использования списков ключей словаря в операциях над множествами
- Связанные темы
Поиск на других ресурсах:
1. Встроенная функция list(). Пример применения со словарями
Использование встроенной функции list() позволяет получать списки значений, ключей и пар (ключ:значение). Чтобы сформировать соответствующий список с помощью list() нужно использовать один из следующих методов:
- метод values() позволяет получить список значений словаря;
- метод keys() позволяет получить список ключей словаря;
- метод items() позволяет получить список пар (ключ:значение).
Более подробно об использовании методов values(), keys(), items() описывается здесь.
Пример.
# Работа со словарями # Встроенный метод list() # Исходный словарь Figures = { 1:'Rectangle', 2:'Triangle', 3:'Circle'} # 1. Получить список значений словаря values = list(Figures.values()) print(values) # ['Rectangle', 'Triangle', 'Circle'] # 2. Получить список ключей словаря keys = list(Figures.keys()) # keys = [1, 2, 3, 4] print(keys) # 3. Получить список пар (ключ:значение) pairs = list(Figures.items()) print(pairs) # [(1,'Rectangle'),(2,'Triangle'),(3,'Circle')]
⇑
2. Встроенная функция zip(). Пример создания словаря
Функция zip() позволяет создать словарь путем объединения списков ключей и значений.
Пример.
# Словари. Функция zip() # Создание словаря из списков ключей и значений Numbers = dict(zip([1, 2, 3], ['One', 'Two', 'Three'])) print(Numbers) # {1: 'One', 2: 'Two', 3: 'Three'}
⇑
3. Обход словаря с помощью цикла for. Пример
В примере демонстрируется обход словаря с помощью цикла for и вывод всех пар (ключ:значение).
Пример.
# Работа со словарями # Обход словаря с помощью цикла for # Исходный словарь Months = { 1:'Jan', 2:'Feb', 3:'Mar', 4:'Apr', 5:'May', 6:'Jun', 7:'Jul', 8:'Aug', 9:'Sep', 10:'Oct', 11:'Nov', 12:'Dec' } # Цикл for обхода словаря # в цикле mn - ключ, Months[mn] - значение for mn in Months: print(mn, ': ', Months[mn])
Результат выполнения программы
1 : Jan 2 : Feb 3 : Mar 4 : Apr 5 : May 6 : Jun 7 : Jul 8 : Aug 9 : Sep 10 : Oct 11 : Nov 12 : Dec
⇑
4. Использование словарей для разреженных структур данных. Пример
Словари могут эффективно использоваться для представления разреженных структур данных. Примерами таких данных могут быть двумерные массивы, в которых только несколько элементов имеют определенные значения.
Пример. В примере продемонстрировано представление разреженной матрицы чисел в виде словаря. Пусть задана матрица
которую нужно представить в виде словаря. Решение задачи следующее:
# Словари. Представление разреженных структур данных # Матрица M M = {} # создать пустой словарь M[(0, 1)] = 1 # ключ=(0,1): значение=1 M[(1, 2)] = 3 # пара (ключ:значение) = ((1,2):3) M[(2, 0)] = 2 # пара (ключ:значение) = ((2,0):2) print(M) # {(0, 1): 1, (1, 2): 3, (2, 0): 2}
В вышеприведенном примере ключами словаря являются кортежи, которые содержат координаты непустых элементов. Так, значение ключа (2, 0) означает строку 2, столбец 0.
⇑
5. Создание словарей с помощью генераторов словарей. Примеры
Словари можно создавать с использованием генераторов словарей. В этом случае используется один из нижеследующих способов:
- сгенерировать словарь на основе заданного выражения;
- сгенерировать словарь на основе итерированного объекта;
- инициализировать словарь из списков ключей;
- сгенерировать словарь с использованием функции zip().
В примере демонстрируется использование всех способов.
Пример.
# Словари. Генераторы словарей # 1. Сгенерировать словарь на основе заданного выражения # Генерируются пары (ключ: значение) = (i: 5*i) A = { i: i*5 for i in [10,20,30,40] } print(A) # {10: 50, 20: 100, 30: 150, 40: 200} # 2. Сгенерировать словарь по итерируемому объекту (строке) s = 'Hello' B = { sym: sym*3 for sym in s } # пара (sym:sym*3) print(B) # {'H': 'HHH', 'e': 'eee', 'l': 'lll', 'o': 'ooo'} numbers = [ 15, 25, 30 ] C = { num: str(num) for num in numbers } print(C) # {15: '15', 25: '25', 30: '30'} # 3. Инициализация словаря из списка ключей # Заполнить список ключей значением, введенным с клавиатуры value = int(input('Input value: ')) listKeys = [ 1, 2, 3, 4 ] D = { lk:value for lk in listKeys } print(D) # Заполнить список ключей значением None value = None listKeys = [ 'a', 'b', 'c' ] E = { lk:value for lk in listKeys } print(E) # {'a': None, 'b': None, 'c': None} # 4. Сгенерировать словарь с использованием функции zip() WMonths = [ 'Dec', 'Jan', 'Feb'] NumMonths = [ 12, 1, 2 ] F = { nm:wm for (nm,wm) in zip(NumMonths,WMonths) } print(F) # {12: 'Dec', 1: 'Jan', 2: 'Feb'}
⇑
6. Сортировка словаря. Пример
Как известно, ключи в словаре сохраняются в произвольном порядке. Если возникает необходимость отсортировать словарь по ключам, то для этого можно использовать метод sort(), который используется для списков. Для этого предварительно нужно конвертировать представление ключей в список.
Пример.
# Словари. Сортировка по ключам # Исходный словарь A = { 'f':10, 'а':2, 'с':17 } # Сортировка по ключам # 1. Получить представление ключей ak = A.keys() # ak = dict_keys(['f', 'а', 'с']) # 2. Конвертировать представления ak в список list_ak = list(ak) # list_ak = ['f', 'а', 'с'] # 3. Отсортировать список ключей - функция sort() list_ak.sort() # ['а', 'с', 'f'] # 4. Вывести перечень (ключ:значение) # в отсортированном порядке по ключам, # сформировать новый словарь B = {} for k in list_ak: print('(', k, ': ', A[k], ')') B[k] = A[k] print(B) # {'a': 2, 'c': 17, 'f': 10}
⇑
7. Пример использования списков ключей словаря в операциях над множествами
На основании ключей словаря можно образовывать списки. Эти списки ключей могут быть использованы в операциях над множествами, которые образовывают новое множество. Другими словами, можно смешивать разные объекты представлений (множества, словари) между собой с помощью соответствующих операций.
Для того, чтобы ключи можно было использовать в операциях над множествами, нужно предварительно конвертировать их в списки с помощью метода keys(). Более подробно о применении метода keys() описывается здесь.
Пример. В примере продемонстрировано взаимодействие словарей и множеств с помощью операций над множествами |, &, ^.
# Словари. Объединение словарей и множеств # Исходный словарь A = { 1:'One', 2:'Two', 3:'Three', 4:'Four', 5:'Five' } # Объединение отображения ключей и множеств, # получается новое множество # 1. Получить отображение ключей keys = A.keys() # keys = dict_keys([1, 2, 3, 4, 5]) # 2. Сформировать новое множество ключей которое содержит число 2 B = keys & {2} # B = {2} - новое множество # 3. Сформировать новое множество ключей, которое содержит числа 3, 5 C = keys {3, 5} # {1, 2, 4} # 4. Добавить к множеству ключей числа 8, 11 D = keys | { 8, 11 } # D = {1, 2, 3, 4, 5, 8, 11}
⇑
Связанные темы
- Словари. Основные понятия. Характеристики. Создание словарей. Доступ к значениям в словаре
- Встроенные функции и операции обработки словарей
- Методы работы со словарями
⇑