Я хотел бы напечатать определенный ключ словаря Python:
mydic = {}
mydic['key_name'] = 'value_name'
Теперь я могу проверить, если mydic.has_key('key_name')
, но я хотел бы напечатать название ключа 'key_name'
. Конечно, я мог бы использовать mydic.items()
, но я не хочу, чтобы все перечисленные ключи, просто один конкретный ключ. Например, я ожидал что-то вроде этого (в псевдокоде):
print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Есть ли name_the_key()
способ напечатать имя ключа?
Изменить:
ОК, большое спасибо, ребята, за ваши реакции! :) Я понимаю, что мой вопрос не очень хорошо сформулирован и тривиален. Я просто запутался, потому что я понял key_name и mydic['key_name']
это две разные вещи, и я подумал, что было бы неправильно печатать key_name
контекст словаря. Но на самом деле я могу просто использовать «key_name» для ссылки на ключ! :)
источник
Ответы:
Словарь по определению имеет произвольное количество ключей. Там нет "ключ". У вас есть
keys()
метод, который дает вам питонlist
всех ключей, и у вас естьiteritems()
метод, который возвращает пары ключ-значение, поэтомуВерсия Python 3:
Таким образом, у вас есть ручка для ключей, но они действительно имеют смысл только в том случае, если они связаны со значением. Я надеюсь, что понял ваш вопрос.
источник
.iteritems()
что больше не поддерживается ....items()
. Я добавил пример.items()
возвращает список в Python 2.x.Дополнительно вы можете использовать ....
источник
Хм, я думаю, что вы, возможно, захотите сделать, это напечатать все ключи в словаре и их соответствующие значения?
Если это так, вы хотите следующее:
Убедитесь, что вы также используете + вместо '. Я думаю, что запятая поместит каждый из этих элементов в отдельную строку, а в качестве плюса - в одну строку.
источник
"is"
иkey
т. д. Если вы используете,+
вам нужно добавить дополнительный отступ в строках. Кроме того, ключ и значение не обязательно являются строкой, в этом случае запятая будет использовать str (ключ) и str (значение), тогда как+
вызовет ошибкуПримечание: в Python 3 dic.iteritems () был переименован в dic.items ()
источник
Имя ключа 'key_name' является ключом_имя, следовательно,
print 'key_name'
или любой другой переменной, которую вы представляете.источник
В Python 3:
источник
Поскольку мы все пытаемся угадать, что может означать «напечатать имя ключа», я попытаюсь это сделать. Возможно, вам нужна функция, которая берет значение из словаря и находит соответствующий ключ? Обратный поиск?
Обратите внимание , что многие клавиши могут иметь такое же значение, так что эта функция возвращает некоторый ключ , имеющий значение, возможно , не тот , который вы задумывали.
Если вам нужно делать это часто, имеет смысл создать обратный словарь:
источник
iteritems
наitems
, то, как первоначально показано, этот ответ вернет только первый ключ - если есть несколько совпадений. Чтобы решить эту проблему, создайте пустой список передfor loop
(values_list = []
), затем добавьте ключи к этому списку (values_list.append(k)
) вif
цикле. Наконец, переместите оператор return (return values_list
) за пределыfor
цикла.Или вы можете сделать это так:
источник
Изменить: Обновлено для F-строк Python 3 ...
источник
Не забудьте сделать
источник
Что не так с использованием
'key_name'
вместо, даже если это переменная?источник
источник
источник
Вероятно, самый быстрый способ получить только имя ключа:
Результат:
Преобразует
dictionary
в alist
затем перечисляет первый элемент, который является целым, аdict
затем перечисляет первое значение этого элемента, которое:key_name
источник
Я посмотрел на этот вопрос, потому что я хотел знать, как извлечь имя «ключа», если в моем словаре была только одна запись. В моем случае ключ был неизвестен мне и мог быть любым количеством вещей. Вот что я придумал:
источник
Попробуй это:
источник
источник
Если вы хотите получить ключ одного значения, поможет следующее:
Питоническим способом:
источник
Я добавляю этот ответ как один из других ответов здесь ( https://stackoverflow.com/a/5905752/1904943 ), датированный (Python 2;
iteritems
), и представленный код - если обновляется для Python 3 согласно предложенному Обходной путь в комментарии к этому ответу - молча не удается вернуть все соответствующие данные.Задний план
У меня есть некоторые метаболические данные, представленные в графе (узлы, ребра, ...). В словарном представлении этих данных ключи имеют форму
(604, 1037, 0)
(представляющую исходный и целевой узлы и тип ребра) со значениями формы5.3.1.9
(представляющими коды фермента EC).Найти ключи для заданных значений
Следующий код правильно находит мои ключи с заданными значениями:
тогда как этот код возвращает только первый (возможно, из нескольких совпадающих) ключей:
Последний код, наивно обновленный заменой
iteritems
наitems
, не возвращается(604, 3936, 0), (1037, 3936, 0
.источник
Для доступа к данным вам необходимо сделать это:
Или, чтобы получить доступ к значению, вы просто вызываете его с ключа:
foo[bar]
источник