Как я могу получить ключ словаря как переменную непосредственно в Python (не путем поиска по значению)? - PullRequest
172 голосов
/ 23 августа 2010

Извините за этот основной вопрос, но мои поиски по этому вопросу не приводят ничего, кроме как получить ключ словаря на основе его значения, которое я предпочел бы не использовать, так как я просто хочу текст / имя ключа ибеспокоюсь, что поиск по значению может в конечном итоге вернуть 2 или более ключей, если в словаре много записей ... я пытаюсь сделать следующее:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

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

Я видел метод ниже, но это, кажется, просто возвращает значение ключа

get(key[, default])

Ответы [ 11 ]

217 голосов
/ 23 августа 2010

Вам следует перебирать ключи с помощью:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])
86 голосов
/ 23 августа 2010

Если вы хотите напечатать ключ и значение, используйте следующее:

for key, value in my_dict.iteritems():
    print key, value
77 голосов
/ 23 августа 2010

Причина этого заключается в том, что я распечатываю их в документе и хочу использовать имя ключа и значение при этом

Исходя из вышеуказанного требованиячто я бы предложил:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))
38 голосов
/ 24 июля 2015

Если словарь содержит одну пару, например:

d = {'age':24}

тогда вы можете получить как

field, value = d.items()[0]

Для Python 3.5:

key = list(d.keys())[0]
11 голосов
/ 30 декабря 2014

keys=[i for i in mydictionary.keys()] или keys = list(mydictionary.keys())

9 голосов
/ 22 ноября 2016

Все так просто:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

Вы измените свой словарь и сначала сделайте его копию

5 голосов
/ 27 февраля 2015

Итерация по словарю (i) вернет ключ, затем, используя его (i), получит значение

for i in D:
    print "key: %s, value: %s" % (i, D[i])
3 голосов
/ 10 ноября 2018

Вы можете просто использовать *, который распаковывает ключи словаря. Пример:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')
3 голосов
/ 20 марта 2017

Что я иногда делаю, так это создаю еще один словарь, чтобы иметь возможность обращаться ко всем, что мне нужно, в виде строки.Затем я перебираю несколько словарей, соответствующих ключам, чтобы построить, например, таблицу с первым столбцом в качестве описания.

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

Вы можете легко создать огромное количество словарей для сопоставления данных (мне нравится тот факт, что с помощью словаря вывсегда может ссылаться на что-то, хорошо известное как имя ключа)

да, я использую словари для хранения результатов функций, поэтому мне не нужно запускать эти функции каждый раз, когда я вызываю их только один раз, а затем получаю доступ к результатам в любое время,

РЕДАКТИРОВАТЬ: в моем примере имя ключа на самом деле не имеет значения (лично мне нравится использовать одинаковые имена ключей, так как проще выбрать одно значение из любого из моих соответствующих словарей), просто убедитесь, что числоколичество ключей в каждом словаре одинаково

3 голосов
/ 21 ноября 2016

Для Python 3 Если вы хотите получить только ключи, используйте это.Замените print (key) на print (values), если хотите значения.

for key,value in my_dict:
  print(key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...