Python dict получить имя ключа

How can I get dictionary key as variable directly in Python (not by searching from value)?

Sorry for this basic question but my searches on this are not turning up anything other than how to get a dictionary’s key based on its value which I would prefer not to use as I simply want the text/name of the key and am worried that searching by value may end up returning 2 or more keys if the dictionary has a lot of entries. what I am trying to do is this:

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

The reason for this is that I am printing these out to a document and I want to use the key name and the value in doing this I have seen the method below but this seems to just return the key’s value

Do you just want to check that ‘keyname’ exists in the dictionary? Because you do have it already.

15 Answers 15

You should iterate over keys with:

for key in mydictionary: print "key: %s , value: %s" % (key, mydictionaryPython dict получить имя ключа) 

If you want to access both the key and value, use the following:

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

The reason for this is that I am printing these out to a document and I want to use the key name and the value in doing this

Based on the above requirement this is what I would suggest:

keys = mydictionary.keys() keys.sort() for each in keys: print "%s: %s" % (each, mydictionary.get(each)) 

I prefer the other answers like the for loop on my_dict.item() or list comprehension like keys = list(my_dict.keys) but just in case someone wants to do this in Python 3 : (line 2) keys = sorted(my_dict.keys()) + add () to print.

Читайте также:  Attach file code in html

If the dictionary contains one pair like this:

Pretty hackish but d.__iter__().__next__() does a the trick. you get ‘age’. You get the same result with this d.items().__iter__().__next__()[0].

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

You could simply use * which unpacks the dictionary keys. Example:

mydictionary= result = mydictionary.popitem()[0] 

You will modify your dictionary and should make a copy of it first

Iterate over dictionary (i) will return the key, then using it (i) to get the value

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

For python 3 If you want to get only the keys use this. Replace print(key) with print(values) if you want the values.

for key,value in my_dict: print(key) 

What I sometimes do is I create another dictionary just to be able whatever I feel I need to access as string. Then I iterate over multiple dictionaries matching keys to build e.g. a table with first column as description.

dict_names = dict_values = for key, value in dict_names.items(): print(' '.format(dict_namesPython dict получить имя ключа, dict_valuesPython dict получить имя ключа) 

You can easily do for a huge amount of dictionaries to match data (I like the fact that with dictionary you can always refer to something well known as the key name)

yes I use dictionaries to store results of functions so I don’t need to run these functions everytime I call them just only once and then access the results anytime.

EDIT: in my example the key name does not really matter (I personally like using the same key names as it is easier to go pick a single value from any of my matching dictionaries), just make sure the number of keys in each dictionary is the same

Источник

Получить ключ по значению

Если элемент строки есть среди значений словаря, необходимо вывести соответствующий значению ключ. Если среди ключей — то вывести значение по ключу значение. Вывести необходимо в две строки, значения отдельно от ключей. Т.е. для строки ‘a3a2c’ ожидаемый вывод ‘113’ и ‘cb’ Как вывести значения по ключу, я разобрался:

for i in stroka: if i in d.keys(): print(d[i], end='') 
for j in stroka: if j in d.values(): print(. end='') 

9 ответов 9

d = < 1: '1', '2': 2, 3: '3', >def get_key(d, value): for k, v in d.items(): if v == value: return k print(get_key(d, '1')) print(get_key(d, 2)) print(get_key(d, 42)) 

Вообще, когда мне нужно получать значение по ключу и ключ по значению, я завожу два словаря.

Можно инвертировать словарь inv_d = и еще раз вывести значение по ключу. Но может есть еще способ? Что-то можно подставить в print в моем случае?

Функцию get_key, например. Или используя инвертированный словарь: for k in inv_d: print(inv_d[k]) . Тут у нас в k будет значение оригинального словаря и соответственно, мы будем получать и выводить ключи по значениям

Т.е. для строки ‘a3a2c’ ожидаемый вывод ‘113’ и ‘cb’

Если есть словарь d и коллекция ключей keys , то чтобы получить соответствующие значения, используя default значения для отсутствующих ключей:

def get_values(d, keys, default=None): return (d.get(k, default) for k in keys) 
d = s = 'a3a2c' print(''.join(get_values(d, s, ''))) # -> 113 inv_d = dict(zip(d.values(), d.keys())) print(''.join(get_values(inv_d, s, ''))) # -> cb 

Если хочется сразу отфильтровать отсутствующие ключи:

def get_existing_values(d, keys): return filter(None, map(d.get, keys)) 
>>> ''.join(get_existing_values(inv_d, s)) 'cb' 
for key in a: print ("%s -> %s" % (key, aPython dict получить имя ключа)) #python3 
d=dict(a='1',b='2',c='3') # первый словарь print(d) stroka = 'a3a2c' print('stroka=',stroka) for m in stroka: #поиск элементов из stroka в ключах d if m in d.keys(): #вывод значений этих лючей print('буква ', m, 'из строки "stroka" является ключом значения ', d[m]) s=[] for i in d.keys(): #второй s.append((d[i],i)) #словарь b=dict(s) #является обратным для первого #значения являются ключами, а ключи значениями stroka_=stroka for i in stroka_: #поиск элементов из stroka в значениях d if i in b.keys(): #вывод ключей этих значений print('цифра ', i, 'из строки "stroka" является значением ключа', b[i]) 

Но задача была бы чуть интересней, если бы представление значений словаря было не строчным, а целочисленным.

Источник

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

В Python мы можем получить значения, присутствующие в словаре, по их ключам. Для этого используется синтаксис dict_namePython dict получить имя ключа . Но мы не можем таким же образом получить ключ по значению.

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

Как получить ключ из пары ключ-значение путем перебора элементов словаря

Это самый простой способ извлечь ключ по значению. Мы проверяем каждую пару ключ-значение, чтобы найти ключ, связанный с текущим значением.

Для этой задачи мы будем использовать метод items() . Этот словарный метод возвращает список кортежей, содержащих пары ключ-значение. В полученном списке мы проверим каждый кортеж, чтобы найти ключ, связанный с нашим значением.

myDict = print("Dictionary is:") print(myDict) dict_items = myDict.items() print("Given value is:") myValue = "PT" print(myValue) print("Associated Key is:") for key, value in dict_items: if value == myValue: print(key)
Dictionary is: Given value is: PT Associated Key is: acronym

Мы создали список элементов в myDict с помощью myDict.items() , а затем проверили каждый элемент в списке, чтобы найти ключ для нашего значения.

Как получить ключ по значению с помощью списков

Мы можем создать отдельные списки из ключей и значений, а затем найти ключ нужного значения с помощью метода index() .

Для этой задачи мы сначала создадим список ключей, имеющихся в словаре, используя метод keys() . Затем создадим список значений, используя метод values() . После этого мы получим индекс нужного значения из списка значений с помощью метода index() .

Мы знаем, что список ключей имеет тот же порядок ключей, что и значения в списке значений. Поэтому индекс значения в списке значений будет таким же, как и индекс связанного с ним ключа в списке ключей. Таким образом, найдя индекс значения в списке значений, мы можем найти ключ в списке ключей по тому же индексу.

Это можно сделать следующим образом:

myDict = print("Dictionary is:") print(myDict) dict_keys = list(myDict.keys()) dict_values = list(myDict.values()) print("Given value is:") myValue = "PT" print(myValue) val_index = dict_values.index(myValue) print("Associated key is:") myKey = dict_keys[val_index] print(myKey)
Dictionary is: Given value is: PT Associated key is: acronym

Как получить ключ по значению с помощью list comprehension

Для получения ключа, связанного с заданным значением, вместо метода index() можно использовать представление списка. О представлениях списков вы можете почитать в статье “List comprehensions и другие comprehensions в Python”.

Чтобы найти ключ, мы создадим список ключей, значения которых равны заданному значению:

myDict = print("Dictionary is:") print(myDict) dict_items = myDict.items() print("Given value is:") myValue = "PT" print(myValue) print("Associated key is:") myKey = Python dict получить имя ключа print(myKey)
Dictionary is: Given value is: PT Associated key is: ['acronym']

Заключение

В этой статье мы рассмотрели три способа получить из словаря Python ключ по значению: с помощью list comprehension , метода items() и метода index() .

Источник

Оцените статью