На этом шаге мы перечислим основные методы работы со словарями.
Для работы со словарями предназначены следующие методы:
>>> 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]})
На следующем шаге мы рассмотрим генераторы словарей.