freeCodeCamp/guide/russian/python/data-structures/dictionaries/index.md

130 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: The Python Dict
localeTitle: Диктатор Питона
---
Словарь (aka «dict») в python - это встроенный тип данных, который можно использовать для хранения пар **`key-value`** . Это позволяет вам обращаться с **`dict`** как с _базой данных_ для хранения и организации данных.
Особенность словарей в том, как они реализованы. Хэш-табличная структура упрощает проверку существование - это означает, что мы можем легко определить, присутствует ли в словаре конкретный ключ без необходимости изучения каждый элемент. Интерпретатор Python может просто перейти к ключу местоположения и проверить, есть ли ключ.
Словари могут использовать практически любые произвольные типы данных, такие как строки, целые числа и т. Д. Для ключей. Однако значения, которые не являются хешируемыми, то есть значения, содержащие списки, словари или другие изменяемые типы (которые сравниваются по значению, а не по идентификатору объекта), могут не использоваться в качестве ключей. Числовые типы, используемые для ключей, подчиняются нормальным правилам для числового сравнения: если два числа сравниваются равными (например, `1` и `1.0` ), то они могут использоваться взаимозаменяемо для индексации одной и той же словарной записи. (Обратите внимание, однако, что, поскольку компьютеры хранят числа с плавающей запятой в качестве приближений, как правило, неразумно использовать их в качестве словарных ключей.)
Одним из важнейших требований словаря является то, что ключи **должны** быть уникальными.
Чтобы создать пустой словарь, просто используйте пару фигурных скобок:
```python
>>> teams = {}
>>> type(teams)
>>> <class 'dict'>
```
Чтобы создать непустой словарь с некоторыми начальными значениями, поместите разделенный запятыми список пар ключ-значение:
```python
>>> teams = {'barcelona': 1875, 'chelsea': 1910}
>>> teams
{'barcelona': 1875, 'chelsea': 1910}
```
Легко добавить пары ключ-значение в существующий словарь:
```python
>>> teams['santos'] = 1787
>>> teams
{'chelsea': 1910, 'barcelona': 1875, 'santos': 1787} # Notice the order - Dictionaries are unordered !
>>> # extracting value - Just provide the key
...
>>> teams['barcelona']
1875
```
**`del`** используется для удаления пары ключ-значение из dict. В сценариях, где ключ, который уже используется, снова используется для хранения значений, старое значение, связанное с этим ключом, полностью теряется. Кроме того, имейте в виду, что это ошибка для извлечения значения с использованием несуществующего ключа.
```python
>>> del teams['santos']
>>> teams
{'chelsea': 1910, 'barcelona': 1875}
>>> teams['chelsea'] = 2017 # overwriting
>>> teams
{'chelsea': 2017, 'barcelona': 1875}
```
**`in`** ключевом слове может быть использована для проверки , существует ли ключ в Словаре или нет:
```python
>>> 'sanots' in teams
False
>>> 'barcelona' in teams
True
>>> 'chelsea' not in teams
False
```
**`keys`** - это встроенный етод,_ который можно использовать для получения ключей данного словаря. Чтобы извлечь ключи, присутствующие в списках dict:
```python
>>> club_names = list(teams.keys())
>>> club_names
['chelsea', 'barcelona']
```
Еще один способ создания словаря - использовать метод **`dict()`** :
```python
>>> players = dict( [('messi','argentina'), ('ronaldo','portugal'), ('kaka','brazil')] ) # sequence of key-value pair is passed
>>> players
{'ronaldo': 'portugal', 'kaka': 'brazil', 'messi': 'argentina'}
>>>
>>> # If keys are simple strings, it's quite easier to specify pairs using keyword arguments
...
>>> dict( totti = 38, zidane = 43 )
{'zidane': 43, 'totti': 38}
```
Понимание Dict также может быть использовано для создания словарей из произвольных выражений ключа и значения:
```python
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
```
**Цикл в словаре**
Чтобы просто перебрать ключи в словаре, а не клавиши и значения:
```python
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> for key in d:
... print(key) # do something
...
x
y
z
```
Чтобы перебрать оба ключа и значения, вы можете использовать следующее:
Для Python 2.x:
```python
>>> for key, item in d.iteritems():
... print items
...
1
2
3
```
Используйте **`items()`** для Python 3.x:
```python
>>> for key, item in d.items():
... print(key, items)
...
x 1
y 2
z 3
```