Як я можу отримати ключ словника як змінну безпосередньо в Python (не шукаючи значення)?


189

Вибачте за це основне запитання, але мої пошуки з цього питання не викликають нічого, крім того, як отримати ключ словника виходячи з його значення, яке я вважаю за краще не використовувати, оскільки я просто хочу текст / ім'я ключа і переживаю, що пошук за значенням може повернутися 2 або більше клавіш, якщо в словнику багато записів ... я намагаюся зробити це:

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

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

Причиною цього є те, що я роздруковую їх у документ, і я хочу використовувати для цього ключове ім’я та значення

Я бачив метод нижче, але це, здається, просто повертає значення ключа

get(key[, default])

Ви просто хочете перевірити, чи в словнику існує "ім'я ключа"? Тому що ви робите є вже.
relet

1
ні, як я вже сказав, потрібно роздрукувати його, це було б ітерацією через велику кількість клавіш
Рік,

currentце поточний ключ, просто зробітьprint current
Moberg

4
Як би ви отримали лише першу клавішу в словнику? (без ітерації)
VISQL

Відповіді:


238

Повторіть клавіші за допомогою:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
Можна просто написатиfor key in mydictionary:
blokeley

7
в python 3.6:print (f"key: {key}, value: {mydictionary[key]}")
JinSnow

94

Якщо ви хочете роздрукувати ключ і значення, скористайтеся наступним:

for key, value in my_dict.iteritems():
    print key, value

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())+ додати () для друку.
Хонікс

50

Якщо словник містить таку пару:

d = {'age':24}

тоді ви можете отримати як

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

Для Python 3.5 зробіть це:

key = list(d.keys())[0]

4
Python3.5:TypeError: 'dict_items' object does not support indexing
Sinux

Досить хакі, але d .__ iter __ () .__ наступний __ () робить трюк. ви отримуєте "вік". Ви отримуєте такий самий результат із цим d.items () .__ iter __ () .__ наступним __ () [0].
йоші

2
У Python3 це працює для однієї пари диктує:key = list(d.keys())[0]
Juha Untinen

Якщо у вас є величезний Dict, використовуючи next()краще в відповідно до: stackoverflow.com/a/27638751/1488445
Юха Untinen

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

python34: SyntaxError: може використовувати зіркове вираження лише як ціль призначення
Tcll

Далі, я використовую python34, тому що я не можу запустити щось новіше у своєму тестовому середовищі Windows.
Tcll

5

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

for i in D:
    print "key: %s, value: %s" % (i, D[i])

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

Ви можете легко зробити так, щоб величезна кількість словників відповідала даним (мені подобається, що за допомогою словника ви завжди можете посилатися на щось добре відоме як ключове ім’я)

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

EDIT: у моєму прикладі ім'я ключа не має особливого значення (мені особисто подобається використовувати однакові імена ключів, оскільки простіше вибрати одне значення з будь-якого зі моїх відповідних словників), просто переконайтеся, що кількість клавіш у кожному словнику: так само


0

Це можна зробити, перекинувши в список клавіші та значення dict. Це також можна зробити для предметів.

Приклад:

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'

-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'}

тоді ви можете знайти основу ключа (імені) на будь-якому вхідному значенні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.