Подтвердить что ты не робот

Python: получить ключ индекса в словаре

Возможный дубликат:
Обратный поиск в словаре - Python
обратное отображение словаря с помощью Python

Как получить ключ от индекса в словаре?

Например, например:

i = {'a': 0, 'b': 1, 'c': 2}

поэтому, если я хочу получить ключ от я [0], он вернет 'a'

4b9b3361

Ответ 1

В словарях Python есть ключ и значение, то, что вы просите, это то, что ключ указывает на заданное значение.

Вы можете сделать это только в цикле:

[k for (k, v) in i.iteritems() if v == 0]

Обратите внимание, что в dict может быть более одного ключа на значение; {'a': 0, 'b': 0} является совершенно законным.

Если вы хотите заказать, вам нужно либо использовать список, либо экземпляр OrderedDict:

items = ['a', 'b', 'c']
items.index('a') # gives 0
items[0]         # gives 'a'

Ответ 2

Вы можете сделать что-то вроде этого:

i={'foo':'bar', 'baz':'huh?'}
keys=i.keys()  #in python 3, you'll need `list(i.keys())`
values=i.values()
print keys[values.index("bar")]  #'foo'

Однако при каждом изменении словаря вам нужно будет обновить свои ключи, потому что словари не упорядочены. Каждый раз, когда вы вставляете новую пару ключ/значение, порядок, который, по вашему мнению, у вас пропадает, заменяется новым (более или менее случайным) порядком. Поэтому запрос индекса в словаре не имеет смысла.

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

d={'i':1, 'j':1}

В этом случае невозможно узнать, хотите ли вы i или j, и на самом деле никакой ответ здесь не сможет сказать вам, какой ('i' или 'j') будет выбран (опять же, потому что словари неупорядочены). Что вы хотите в этой ситуации? Вы можете получить список приемлемых ключей... но я предполагаю, что ваше фундаментальное понимание словарей не совсем правильно.

Ответ 3

По определению словари неупорядочены и поэтому не могут быть проиндексированы. Для такого рода функций используется упорядоченный словарь. Упорядоченный словарь Python

Ответ 4

По определению. dictionary - неупорядоченный набор пары ключ-значение. поэтому у вас нет индекса для пары ключ-значение. Вы можете сохранить их в двух упорядоченных списках с одинаковым значением индекса для ключа и значения. Затем для каждого ключа в определенном индексе в списке ключей вы можете получить связанное значение из списка значений.

ИЛИ лучше использовать упорядоченный словарь.

 d = OrderedDict([('first', 1),

... ('second', 2), ... ('third', 3)])

Отметьте этот упорядоченный список