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

PythonDictionaryKey

Python Problem Overview


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={'keyname':'somevalue'}
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

get(key[, default])

Python Solutions


Solution 1 - Python

You should iterate over keys with:

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

Solution 2 - Python

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

Python 2:

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

Python 3:

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

Solution 3 - Python

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

Solution 4 - Python

If the dictionary contains one pair like this:

d = {'age':24}

then you can get as

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

For Python 3.5, do this:

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

Solution 5 - Python

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

Solution 6 - Python

As simple as that:

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

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

Solution 7 - Python

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

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

Solution 8 - Python

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

Solution 9 - Python

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)

Solution 10 - Python

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 = {'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])

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

Solution 11 - Python

You can do this by casting the dict keys and values to list. It can also be be done for items.

Example:

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'

Solution 12 - Python

if you just need to get a key-value from a simple dictionary like e.g:

os_type = {'ubuntu': '20.04'}

use popitem() method:

os, version = os_type.popitem()
print(os) # 'ubuntu'
print(version) # '20.04'

Solution 13 - Python

names=[key for key, value in mydictionary.items()]

Solution 14 - Python

if you have a dict like

d = {'age':24}

then you can get key and value by d.popitem()

key, value = d.popitem()

Solution 15 - Python

easily change the position of your keys and values,then use values to get key, in dictionary keys can have same value but they(keys) should be different. for instance if you have a list and the first value of it is a key for your problem and other values are the specs of the first value:

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

you can save and use the data easily in Dictionary by this loop:

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

then you can find the key(name) base on any input value.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRickView Question on Stackoverflow
Solution 1 - PythonsystempuntooutView Answer on Stackoverflow
Solution 2 - PythonEscualoView Answer on Stackoverflow
Solution 3 - PythonManoj GovindanView Answer on Stackoverflow
Solution 4 - PythonSudhinView Answer on Stackoverflow
Solution 5 - PythonkurianView Answer on Stackoverflow
Solution 6 - PythonLibertView Answer on Stackoverflow
Solution 7 - PythonGeorgView Answer on Stackoverflow
Solution 8 - PythonsplucenaView Answer on Stackoverflow
Solution 9 - PythonsiddharthView Answer on Stackoverflow
Solution 10 - Pythons3icc0View Answer on Stackoverflow
Solution 11 - PythonlalloluView Answer on Stackoverflow
Solution 12 - PythonSavrigeView Answer on Stackoverflow
Solution 13 - Pythonalbert dellorView Answer on Stackoverflow
Solution 14 - PythonnimaView Answer on Stackoverflow
Solution 15 - Pythonseyyed mojtaba shojasadatiView Answer on Stackoverflow