如何打印字典的键?

294
我想要打印出特定的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'来引用键! :)


24
如果你知道你想要的特定密钥是什么,那么你已经知道这个密钥是什么了。 - Wooble
是的,但能够使用代码检索密钥仍然非常有帮助,这样您就可以执行诸如确定其类型(例如 int32 vs. int64)之类的操作。 - KBurchfiel
19个回答

5
import pprint
pprint.pprint(mydic.keys())

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

2
即使是一个变量,使用'key_name'有什么问题吗?

2

可能是检索仅键名的最快方法:

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

print mydic.items()[0][0]

结果:

key_name

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

为什么也要检索该值呢? - Martijn Pieters

2

我添加了这个答案,因为其他答案(https://dev59.com/w2025IYBdhLWcg3wnXSf#5905752)已经过时(Python 2; iteritems),而且如果按照那个答案的评论中建议的解决方法更新为Python 3,则呈现的代码会在不返回所有相关数据的情况下静默失败。


背景

我有一些代表在图形中的代谢数据(节点,边缘等)。在这些数据的字典表示中,的形式为(604, 1037, 0)(表示源和目标节点以及边缘类型),而的形式为5.3.1.9(表示EC酶代码)。

查找给定值的键

以下代码可以正确地查找我的键,给定值:

def k4v_edited(my_dict, value):
    values_list = []
    for k, v in my_dict.items():
        if v == value:
            values_list.append(k)
    return values_list

print(k4v_edited(edge_attributes, '5.3.1.9'))
## [(604, 1037, 0), (604, 3936, 0), (1037, 3936, 0)]

而这段代码仅返回第一个(可能有多个匹配项)键:

def k4v(my_dict, value):
    for k, v in my_dict.items():
        if v == value:
            return k

print(k4v(edge_attributes, '5.3.1.9'))
## (604, 1037, 0)

后面的代码,天真地将iteritems替换为items,无法返回(604, 3936, 0), (1037, 3936, 0)


1

我查找了这个问题,因为我想知道如何在我的字典中只有一个条目的情况下检索“键”的名称。在我的情况下,这个键对我来说是未知的,可能是任何一件事。以下是我想出的方法:

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

0
如果您想获取单个值的键,可以使用以下方法:
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)

0

试试这个:

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

0
key_name = '...'
print "the key name is %s and its value is %s"%(key_name, mydic[key_name])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接