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

190

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

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

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

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

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

get(key[, default])
стог
источник
Вы просто хотите проверить, что в словаре существует «имя ключа»? Потому что у вас уже есть.
Рет
1
нет, как я уже сказал, нужно распечатать его, он будет перебирать большое количество ключей
Рик
currentэто текущий ключ, просто сделайprint current
Моберг
4
Как бы вы получили только 1-й ключ в словаре? (без итераций)
VISQL

Ответы:

239

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

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])
systempuntoout
источник
10
Вы можете просто написатьfor key in mydictionary:
Blokeley
7
в print (f"key: {key}, value: {mydictionary[key]}")
питоне
94

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

for key, value in my_dict.iteritems():
    print key, value
Escualo
источник
26
Для Python 3: items () вместо iteritems ()
toshiro92
82

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

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

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

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))
Маной Говиндан
источник
Я предпочитаю другие ответы, такие как цикл for my_dict.item()или понимание списка, например, keys = list(my_dict.keys)но на тот случай, если кто-то захочет сделать это в Python 3: (строка 2) keys = sorted(my_dict.keys())+ add () для печати.
Honiix
50

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

d = {'age':24}

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

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

Для Python 3.5 сделайте это:

key = list(d.keys())[0]
Sudhin
источник
4
Python3.5:TypeError: 'dict_items' object does not support indexing
Sinux
Довольно хакерский, но d .__ iter __ () .__ next __ () делает свое дело. Вы получаете «возраст». Вы получаете тот же результат с этим d.items () .__ iter __ () .__ next __ () [0].
Йоши
2
В Python3 это работает для одной пары диктов:key = list(d.keys())[0]
Юха Унтинен
Если у вас огромный интерес, next()лучше использовать в соответствии с: stackoverflow.com/a/27638751/1488445
Юха Унтинен
14

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

Курьян
источник
Пожалуйста, обязательно используйте кодовые теги и объясните свой ответ.
Chrismas007
9

Так просто, как, что:

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

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

Либерт
источник
8

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

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')
Georg
источник
python34: SyntaxError: может использовать помеченное выражение только как цель назначения
Tcll
черт возьми, я использую python34, потому что я не могу запустить ничего более нового в моей среде тестирования Windows.
Tcll
5

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

for i in D:
    print "key: %s, value: %s" % (i, D[i])
splucena
источник
3

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

for key,value in my_dict:
  print(key)
Сиддхарт
источник
3

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

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])

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

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

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

s3icc0
источник
0

Вы можете сделать это путем приведения к списку ключей и значений. Это также можно сделать для предметов.

Пример:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'
lallolu
источник
-2

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

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

Вы можете легко сохранять и использовать данные в словаре с помощью этого цикла:

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

тогда вы можете найти ключ (имя) по любому входному значению.

Сейед Мойтаба Шохасадати
источник