如何打印字典的关键?
我已经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.