На этом шаге мы перечислим основные методы работы со словарями.
Для работы со словарями предназначены следующие методы:
>>> d1, d2 = {"a": 1, "b": 2}, {"a": 3, "c": 4, "d": 5}
>>> d1.keys(), d2.keys() # Получаем объект dict_keys
(dict_keys(['b', 'a']), dict_keys(['d', 'c', 'a']))
>>> list(d1.keys()), list(d2.keys()) # Получаем список ключей
(['b', 'a'], ['d', 'c', 'a'])
>>> for k in d1.keys(): print(k, end=" ")
a b
>>> d1.keys() | d2.keys() # Объединение
{'c', 'd', 'b', 'a'}
>>> d1.keys() - d2.keys() # Разница
{'b'}
>>> d2.keys() - d1.keys() # Разница
{'d', 'c'}
>>> d1.keys() & d2.keys() # Одинаковые ключи
{'a'}
>>> d1.keys() ^ d2.keys() # Уникальные ключи
{'c', 'd', 'b'}
>>> d = {"a": 1, "b": 2}
>>> d.values() # Получаем объект dict_values
dict_values([2, 1])
>>> list(d.values()) # Получаем список значений
[2, 1]
>>> [v for v in d.values()]
[2, 1]
>>> d = {"a": 1, "b": 2}
>>> d.items() # Получаем объект dict_items
dict_items([('b', 2), ('a', 1)])
>>> list(d.items()) # Получаем список кортежей
[('b', 2), ('a', 1)]
>>> d = {"a": 1, "b": 2}
>>> "a" in d # Ключ существует
True
>>> "c" in d # Ключ не существует
False
>>> d = {"a": 1, "b": 2}
>>> "c" not in d # Ключ не существует
True
>>> "a" not in d # Ключ существует
False
>>> d = {"a": 1, "b": 2}
>>> d.get("a"), d.get("с"), d.get("c", 800)
(1, None, 800)
>>> d = {"a": 1, "b": 2}
>>> d.setdefault("a"), d.setdefault("с"), d.setdefault("d", 0)
(1, None, 0)
>>> d
{'c': None, 'd': 0, 'b': 2, 'a': 1}
>>> d = {"a": 1, "b": 2, "c": 3}
>>> d.pop("a"), d.pop("n", 0)
(1, 0)
>>> d.pop("n") # Ключ отсутствует и нет второго параметра
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
d.pop("n") # Ключ отсутствует и нет второго параметра
KeyError: 'n'
>>> d
{'c': 3, 'b': 2}
>>> d = {"a": 1, "b": 2}
>>> d.popitem() # Удаляем произвольный элемент
('b', 2)
>>> d.popitem() # Удаляем произвольный элемент
('a', 1)
>>> d.popitem() # Словарь пустой. Возбуждается исключение
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
d.popitem() # Словарь пустой. Возбуждается исключение
KeyError: 'popitem(): dictionary is empty'
>>> d = {"a": 1, "b": 2}
>>> d.clear() # Удаляем все элементы
>>> d # Словарь теперь пустой
{}
update(<Ключ1>=<Значение1>[, ..., <КлючN>=<ЗначениеN>]) update(<Словарь>) update(<Список кортежей с двумя элементами>) update(<Список списков с двумя элементами>)
>>> d = {"a": 1, "b": 2}
>>> d.update(c=3, d=4)
>>> d
{'c': 3, 'd': 4, 'b': 2, 'a': 1}
>>> d.update({"c": 10, "d": 20}) # Словарь
>>> d # Значения элементов перезаписаны
{'a': 1, 'd': 20, 'b': 2, 'c': 10}
>>> d.update([("d", 80), ("e", 6)]) # Список кортежей
>>> d
{'a': 1, 'd': 80, 'b': 2, 'c': 10, 'e': 6}
>>> d.update ([["a", "str"], ["i", "t"]]) # Список списков
>>> d
{'a': 'str', 'i': 't', 'd': 80, 'b': 2, 'c': 10, 'e': 6}
>>> d1 = {"a": 1, "b": [10, 20]}
>>> d2 = d1.copy() # Создаем поверхностную копию
>>> d1 is d2 # Это разные объекты
False
>>> d2["a"] = 800 # Изменяем значение
>>> d1, d2 # Изменилось значение только в d2
({'b': [10, 20], '?': 1}, {'a': 800, 'b': [10, 20]})
>>> d2["b"][0] = "new" # Изменяем значение вложенного списка
>>> d1, d2 # Изменились значения и в d1, и в d2!!!
({'b': ['new', 20], 'a': 1}, {'a': 800, 'b': ['new', 20]})
На следующем шаге мы рассмотрим генераторы словарей.