How can you print a key given a value in a diction

2019-02-17 15:33发布

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.

4条回答
做自己的国王
2楼-- · 2019-02-17 15:52

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

查看更多
时光不老,我们不散
3楼-- · 2019-02-17 15:57

In Python 3:

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

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

Output:

Y
查看更多
Lonely孤独者°
4楼-- · 2019-02-17 15:57

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

查看更多
爱情/是我丢掉的垃圾
5楼-- · 2019-02-17 15:58

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
查看更多
登录 后发表回答