如何打印字典的关键?

我已经find了我的问题,但没有直接回答。 我想打印一个特定的Python字典键:

mydic = {} mydic['key_name'] = 'value_name' 

现在我可以检查mydic.has_key('key_name') ,但是我想要做的是打印'key_name'的名字。 当然,我可以使用mydic.items() ,但我不希望列出所有的键,只是一个特定的键。 例如,我期望像这样(在伪代码中):

 print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name'] 

有没有name_the_key()方法来打印一个键名?


编辑:好的,非常感谢你们的反应! :)我意识到我的问题不是很好的公式化和微不足道的。 我只是感到困惑,因为我意识到key_name和mydic['key_name']是两个不同的东西,我认为这是不正确的打印key_name出字典上下文。 但实际上,我可以简单地使用'key_name'来引用密钥! 🙂

根据定义,字典具有任意数量的键。 没有“钥匙”。 你有keys()方法,它给你一个所有键的python list ,并且你有iteritems()方法,它返回键值对,所以

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

Python 3版本:

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

所以你有一个关键的句柄,但他们只有真正的意义,如果耦合到一个值。 我希望我能理解你的问题。

嗯,我想你可能想要做的是打印字典中的所有键和它们各自的值?

如果是这样你想要以下内容:

 for key in mydic: print "the key name is" + key + "and its value is" + mydic[key] 

确保你使用+而不是',以及。 逗号将把每个项目放在一个单独的行,我认为,加号将把它们放在同一行。

键'key_name'的名字是key_name,因此print 'key_name'或者其他variables代表它。

 dic = {"key 1":"value 1","key b":"value b"} #print the keys: for key in dic: print key #print the values: for value in dic.itervalues(): print value #print key and values for key, value in dic.iteritems(): print key, value 

另外,你可以使用….

 print(dictionary.items()) #prints keys and values print(dictionary.keys()) #prints keys print(dictionary.values()) #prints values 

既然我们都在猜测“打印关键字”的意思,那我就试一试。 也许你想要一个从字典中获取值的函数,并find相应的键? 反向查找?

 def key_for_value(d, value): """Return a key in `d` having a value of `value`.""" for k, v in d.iteritems(): if v == value: return k 

请注意,许多键可能具有相同的值,所以此函数将返回一些具有该值的键,可能不是您想要的。

如果你需要经常这样做,build立反向字典是有意义的:

 d_rev = dict(v,k for k,v in d.iteritems()) 

或者你可以这样做:

 for key in my_dict: print key, my_dict[key] 

使用'key_name'有什么问题,即使它是一个variables?

 import pprint pprint.pprint(mydic.keys()) 
 # highlighting how to use a named variable within a string: dict = {'a': 1, 'b': 2} # simple method: print "a %(a)s" % dict print "b %(b)s" % dict # programmatic method: for key in dict: val = '%('+key+')s' print key, val % dict # yields: # a 1 # b 1 # using list comprehension print "\n".join(["%s: %s" % (key, ('%('+key+')s') % dict) for key in dict]) # yields: # a: 1 # b: 1 
 dict = {'name' : 'Fred', 'age' : 100, 'employed' : True } # Choose key to print (could be a user input) x = 'name' if x in dict.keys(): print(x) 

可能是最快的方法来检索只有关键的名字:

 mydic = {} mydic['key_name'] = 'value_name' print mydic.items()[0][0] 

结果:

 key_name 

dictionary转换为一个list然后列出第一个元素是整个dict然后列出该元素的第一个值: key_name

尝试这个:

 def name_the_key(dict, key): return key, dict[key] mydict = {'key1':1, 'key2':2, 'key3':3} key_name, value = name_the_key(mydict, 'key2') print 'KEY NAME: %s' % key_name print 'KEY VALUE: %s' % value 
 key_name = '...' print "the key name is %s and its value is %s"%(key_name, mydic[key_name]) 

如果你想得到一个单一的值的关键,以下将有所帮助:

 def get_key(b): # the value is passed to the function for k, v in mydic.items(): if v.lower() == b.lower(): return k 

以pythonic方式:

 c = next((x for x, y in mydic.items() if y.lower() == b.lower()), \ "Enter a valid 'Value'") print(c) 

我查了这个问题,因为我想知道如何检索“密钥”的名称,如果我的字典只有一个条目。 在我的情况下,关键是我不知道,可以是任何事情。 这是我想出来的:

 dict1 = {'random_word': [1,2,3]} key_name = str([key for key in dict1]).strip("'[]'") print(key_name) # equal to 'random_word', type: string.