<jupyter_start><jupyter_text>СловариСловари - это неупорядоченные коллекции пар "ключ-значение". В качестве ключей могут использоваться ссылки на хешируемые объекты, а в качестве значений - ссылки на объекты любого типа. Т.к. словари являются неупорядоченными коллекциями, то к ним не применяется понятие индекса элемента и не применяется операция извлечения среза.**Определение**Хешируемые объекты - объекты, которые имеют метод `__hash__()` и могут участвовать в операциях сравнения на равенство с помощью метода `__eq__()`.Метод `__hash__()` возвращает одно и то же значение объекта на протяжении его жизненного цикла.Чтобы создать словарь можно использовать метод `dict()`:<jupyter_code>d = dict(short='dict', long='dictionary')
print(d)
d = dict([(1, 1), (2, 4)])
print(d)<jupyter_output>{1: 1, 2: 4}<jupyter_text>В созданных выше словарях мы получили пары "ключ-значение", в частности ключ short и соответствующее ему значение dict.Также можно создать словарь следующим образом:<jupyter_code>d = {}
print(d)

d = {'dict': 1, 'dictionary': 2}
print(d)<jupyter_output>{}
{'dict': 1, 'dictionary': 2}<jupyter_text>Еще один способ - использовать метод `fromkeys()`:<jupyter_code>d = dict.fromkeys(['a', 'b'])
print(d)
d = dict.fromkeys(['a', 'b'], 100)
print(d)<jupyter_output>{'a': 100, 'b': 100}<jupyter_text>Также можно использовать генератор словарей:<jupyter_code>d = {a: a ** 2 for a in range(7)}
print(d)<jupyter_output>{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}<jupyter_text>Как можно работать со словарями:<jupyter_code>d = {1: 2, 2: 4, 3: 9}
print(d[1])
d[4] = 4 ** 2
print(d)
d['1']<jupyter_output><empty_output><jupyter_text>В первом случае мы обратились к ключу "1", после чего получили вывод на экран его значения "2". Затем мы создали новый ключ "4" и присвоили ему значение "16", после чего эта пара добавилась к нашему словарю. В последнем примере мы попробовали обратиться к несуществующему ключу, поскольку значение '1' стоит в кавычках, а значит это другой тип данных, которого нет в нашем словаре, после чего получили сообщение о том, что такого ключа нет.  Методы для работы со словарямиМетоды вызываются по схеме: `dict.method()`. Ниже будут перечислены полезные методы для работы со словарями:- `clear()` - очищает словарь<jupyter_code>d = {'a': 1, 'b': 2}
d.clear()
print(d)<jupyter_output>{}<jupyter_text>- `copy()` - возвращает копию словаря<jupyter_code>d = {'a': 1, 'b': 2}
b = d.copy()
print(b)<jupyter_output>{'a': 1, 'b': 2}<jupyter_text>- `fromkeys(seq[,value])` - создает словарь с ключами из seq и значением value<jupyter_code>d.fromkeys(['a', 'b'], 10)<jupyter_output><empty_output><jupyter_text>- `get(key[, default])` - возвращает значение ключа, но если его нет, возвращает `default`<jupyter_code>d = {'a': 1, 'b': 2}
d.get('a')<jupyter_output><empty_output><jupyter_text>- `items()` - возвращает пары (ключ, значение)<jupyter_code>d = {'a': 1, 'b': 2}
d.items()
d<jupyter_output><empty_output><jupyter_text>-     `keys()` - возвращает ключи в словаре<jupyter_code>d = {'a': 1, 'b': 2}
print(d.keys())<jupyter_output>dict_keys(['a', 'b'])<jupyter_text>-     `pop(key[, default])` - удаляет ключ и возвращает значение. Если ключа нет, возвращает `default`<jupyter_code>d = {'a': 1, 'b': 2}
d.pop('a')
print(d)<jupyter_output>{'b': 2}<jupyter_text>-  `popitem()` - удаляет и возвращает пару (ключ, значение) с конца<jupyter_code>d = {'a': 1, 'b': 2}
d.popitem()
print(d)<jupyter_output>{'a': 1}<jupyter_text>-  `setdefault(key[, default])` - возвращает значение ключа, но если его нет, создает ключ с значением `default`<jupyter_code>d = {'a': 1, 'b': 2}
d.setdefault('e', 6)
d.setdefault('f')
print(d)<jupyter_output>{'a': 1, 'b': 2, 'e': 6, 'f': None}<jupyter_text>-     `update([other])` - обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются<jupyter_code>d = {'a': 1, 'b': 2}
d.update({'d':5})
print(d)<jupyter_output>{'a': 1, 'b': 2, 'd': 5}<jupyter_text>- `values()` - возвращает значения в словаре<jupyter_code>d = {'a': 1, 'b': 2}
d.values()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1638779527559055, 'fraction_numerical': 0.022391732283464565, 'mean_word_length': 6.3774954627949185, 'pattern_counts': {'":': 0, '<': 54, '<?xml version=': 0, '>': 54, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '16', 'dir': 'jupyter-structured-clean-dedup', 'id': '423726', 'license': 'MIT', 'n_tokens_mistral': 1902, 'n_tokens_neox': 1955, 'n_words': 440, 'path': 'python/dict.ipynb', 'repo_name': 'kidsaids/datascience', 'size': '4064'}