如何在python字典中获取值的键?
字典值是列表:如何在python字典中获取值的键?,python,dictionary,Python,Dictionary,字典值是列表: dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]} 如何从python中的字典1中获取5的键,即“DEF” my_value = 5 for k, v in dictionary_1.iteritems(): if my_value in v: print k break else: print "No key, defaulting to GHJ" 演示: 也许是这样 my_value
dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]}
如何从python中的字典1
中获取5
的键,即“DEF”
my_value = 5
for k, v in dictionary_1.iteritems():
if my_value in v:
print k
break
else:
print "No key, defaulting to GHJ"
演示:
也许是这样
my_value = 5
for k, v in dictionary_1.iteritems():
if my_value in v:
print k
break
else:
print "No key, defaulting to GHJ"
演示:
您必须在字典中搜索:
try:
key = next(k for k, v in dictionary_1.iteritems() if 5 in v)
except StopIteration:
raise KeyError('Key for 5 not found')
这假设您正在查找一个键。要查找所有键,可以使用列表:
keys = [k for k, v in dictionary_1.iteritems() if 5 in v]
列表可能为空。您必须在字典中搜索:
try:
key = next(k for k, v in dictionary_1.iteritems() if 5 in v)
except StopIteration:
raise KeyError('Key for 5 not found')
这假设您正在查找一个键。要查找所有键,可以使用列表:
keys = [k for k, v in dictionary_1.iteritems() if 5 in v]
列表可能为空。一种方法是:
dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]}
for k, v in dictionary_1.items():
if 5 in v:
print(k)
一种方法是:
dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]}
for k, v in dictionary_1.items():
if 5 in v:
print(k)
您可以创建反向dict:
您可以创建反向dict:
假设您可以检查[4,5,6]列表中是否有5,您也可以尝试:
dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]}
print dictionary_1.keys()[dictionary_1.values().index([4,5,6])]
假设您可以检查[4,5,6]列表中是否有5,您也可以尝试:
dictionary_1 = {"ABC": [1,2,3], "DEF":[4,5,6]}
print dictionary_1.keys()[dictionary_1.values().index([4,5,6])]
您的意思是您输入了
5
,并且希望返回“DEF”
?或者反过来呢?你可能想使用一个双向字典:@lc。是的,我有5
,我想得到它的密钥(id为“DEF”)。@simonzack该问题的答案看起来不像下面发布的答案。因为它们不是重复的。@alwbtc:但它们是密切相关的。也检查侧边栏中的链接帖子。您的意思是您有一个5
的输入,并且希望返回“DEF”
?或者反过来呢?你可能想使用一个双向字典:@lc。是的,我有5
,我想得到它的密钥(id为“DEF”)。@simonzack该问题的答案看起来不像下面发布的答案。因为它们不是重复的。@alwbtc:但它们是密切相关的。也请检查侧栏中的链接帖子。如果值是唯一的。这是一个不错的选项,因为op希望默认为键GHJ
(在对我答案的评论中)。所以只要调用d.get(5,“GHJ”)
,只要值是唯一的。这是一个很好的方法,因为op希望默认为键GHJ
(在我回答的注释中)。所以您可以调用d.get(5,“GHJ”)
如果在字典中找不到项,那么它应该返回一个默认值,如“GHJ”。“你会怎么做?”alwbtc更新了我的答案。这是for/else模式,如果找不到键,代码将永远不会中断
,并且执行else
子句。如果在字典中找不到项,则它应该返回一个默认值,如“GHJ”。“你会怎么做?”alwbtc更新了我的答案。这是for/else模式,如果找不到键,代码将永远不会break
,并且执行else
子句。没有见过这样使用next
。。谢谢。@alwbtc:如果您想要默认值,请使用key=next((k代表k,v代表d.iteritems()如果9代表v),'GHJ'))
并删除try..except。还没有看到以这种方式使用next
谢谢。@alwbtc:如果需要默认值,请使用此key=next((k代表k,v代表d.iteritems(),如果9代表v),'GHJ')
并删除try..except。