Словарь — изменяемый объект-отображение.
Прототип
dict([obj, ][**kwargs])
Параметры
obj -- Первым необязательным позиционным аргументом может являться отображение или итерирующийся объект (при этом каждый его элемент должен быть тоже итерирующемся и содержать ровно два объекта).

**kwargs -- Поддерживаются также необязательные именованные аргументы. При использовании вкупе с позиционными аргументами и совпадении ключей значениями из именованных пользуются приоритетом.
Описание
Словари являются отображениями.
Словари являются изменяемыми объектами.

Ключи
Ключами словаря могут являться только объекты, поддерживающие хеширование. Таким образом, использовать в качестве ключей списки, словари и другие изменяемые типы не получится.

Если в словарь будут добавлены несколько значений с одним и тем же ключом, словарь сохранит последнее.

Внимание
Не рекомендуется использоваться в качестве ключей числа с плавающей запятой, так как они хранятся в памяти в виде приближений.

Значения
В качестве значений могут использоваться любые объекты.

Объявление
В коде словари могут быть объявлены при помощи фигурных скобок — {} .

    my_dict = {
'key': 'value',
'sub_dict': {},
2: [1, 2, 3, 4],
}

Кроме того, можно объявить их при помощи конструктора dict().

    # Пустой словарь.
my_dict = dict()

# Словарь из итерирующегося объекта.
my_dict = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

# Словарь из именованных аргументов.
my_dict = dict(one=1, two=2, three=3)

# Словарь из списка кортежей.
my_dict = dict([('two', 2), ('one', 1), ('three', 3)])

Получение значений
Доступ к значениям производится при помощи ключей.

Если ключ отсутствует в словаре, возбуждается исключение KeyError.
+py2.5 Чтобы изменить это поведение можно в наследнике dict определить метод __missing__(key), в котором описать нужные действия при отсутствии ключа.

    my_dict = {'key': 'value'}
my_value = my_dict['key'] # value

Установка значений
Кроме установки значений при создании словаря, можно дополнять его по мере надобности.

    my_dict = {'key': 'value'}
my_dict['new_key'] = 'new_value' # Добавляем новый элемент словаря.

Определение наличия/отсутствия элемента

+py2.2 Определить, присутствует ли ключ в словаре можно при помощи конструкции in.
+py2.2 Определить, отсутствует ли ключ в словаре можно при помощи антонимичной конструкции not in.

    my_dict = {'key': 'value'}

# in
# Ключ 'key' существует, поэтому 'my_key_present' True
my_key_present = 'key' in my_dict
# Ключ 'another_key' отсутствует в словаре, поэтому 'my_key_present' False
my_key_present = 'another_key' in my_dict

# not in
# Ключ 'key' существует, поэтому 'my_key_absent' False
my_key_absent = 'key' not in my_dict
# Ключ 'another_key' отсутствует в словаре, поэтому 'my_key_absent' True
my_key_absent = 'another_key' not in my_dict

Количество элементов в словаре
Количество элементов можно получить, используя функцию len().

    my_dict = {'key': 'value'}
my_dict_length = len(my_dict) # 1

Порядок ключей
Данные в обычном словаре не упорядочены по очередности добавления ключей.

Если требуется хранить порядок, в котором в словарь были добавлены элементы (например для обхода этих элементов), следует использовать collections.OrderedDict().

На заметку
О сложности основных операций для данного типа можно узнать из статьи «Сложность операций со словарями».

Детали реализации CPython
Словари реализованы при помощи динамических хеш-таблиц. По сравнению с двоичными деревьями, это, в большинстве случаев, даёт выигрыш при получшении значений (наиболее часто используемая операция); кроме этого упрошается реализация.

Для каждого ключа при помощи функции hash() вычисляется хеш-код. Код этот широко варьируется в зависимости от ключа и данных процесса (например, хеш для «Python» может быть -539294296, в то время как для «python» — отличается от первого одним битом — он будет 1142331976). Хеш используется для определения места (во внутреннем массиве), где хранится значение. В случае если все используемые вами ключи будут иметь различные хеши, для получения значения по ключу будет затрачено постоянное время — O(1).
Синонимы поиска: словарь, словари, {}, dictionary, методы словарей

Нет обсуждений для отображения.
Если у вас есть, что сказать, можете представиться и исправить ситуацию.