How can you print a key given a value in a dictionary for Python?

Question:

For example lets say we have the following dictionary:

dictionary = {'A':4,
              'B':6,
              'C':-2,
              'D':-8}

How can you print a certain key given its value?

print(dictionary.get('A')) #This will print 4

How can you do it backwards? i.e. instead of getting a value by referencing the key, getting a key by referencing the value.

Asked By: Jett

||

Answers:

I don’t believe there is a way to do it. It’s not how a dictionary is intended to be used…
Instead, you’ll have to do something similar to this.

for key, value in dictionary.items():
    if 4 == value:
        print key
Answered By: SlxS

The dictionary is organized by: key -> value

If you try to go: value -> key

Then you have a few problems; duplicates, and also sometimes a dictionary holds large (or unhashable) objects which you would not want to have as a key.


However, if you still want to do this, you can do so easily by iterating over the dicts keys and values and matching them as follows:

def method(dict, value):
    for k, v in dict.iteritems():
        if v == value:
            yield k
# this is an iterator, example:
>>> d = {'a':1, 'b':2}
>>> for r in method(d, 2):
    print r

b

As noted in a comment, the whole thing can be written as a generator expression:

def method(dict, value):
    return (k for k,v in dict.iteritems() if v == value)

Python versions note: in Python 3+ you can use dict.items() instead of dict.iteritems()

Answered By: Inbar Rose

Hey i was stuck on a thing with this for ages, all you have to do is swap the key with the value e.g.

Dictionary = {'Bob':14} 

you would change it to

Dictionary ={1:'Bob'} 

or vice versa to set the key as the value and the value as the key so you can get the thing you want

Answered By: Will Townley

In Python 3:

# A simple dictionary
x = {'X':"yes", 'Y':"no", 'Z':"ok"}

# To print a specific key (for instance the 2nd key which is at position 1)
print([key for key in x.keys()][1])

Output:

Y
Answered By: Fouad Boukredine
target_key = 4
for i in dictionary:
    if dictionary[i]==target_key:
        print(i)
Answered By: boop

Within a dictionary if you have to find the KEY for the highest VALUE please do the following :

  1. Step 1: Extract all the VALUES into a list and find the Max of list
  2. Step 2: Find the KEY for the particular VALUE from Step 1

The visual analyzer of this code is available in this link : LINK

    dictionary = {'A':4,
              'B':6,
              'C':-2,
              'D':-8}
lis=dictionary.values()
print(max(lis))
for key,val in dictionary.items() :
    if val == max(lis) :
        print("The highest KEY in the dictionary is ",key)
Answered By: karthik bharadwaj

I think this is way easier if you use the position of that value within the dictionary.

dictionary = {'A':4,
              'B':6,
              'C':-2,
              'D':-8}
 
# list out keys and values separately
key_list = list(dictionary.keys())
val_list = list(dictionary.values())
 
# print key with val 4
position = val_list.index(4)
print(key_list[position])
 
# print key with val 6
position = val_list.index(6)
print(key_list[position])
 
# one-liner
print(list(my_dict.keys())[list(my_dict.values()).index(6)])
Answered By: Bogdan Tudorache
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.