Python 获取值的键

Python 获取值的键,python,Python,可能重复: 在python中,假设我们有一个字典: mydict = {'myKey': 'myValue'} 要获取myKey的值,我们需要 myDict['myKey'] 假设我们需要反过来做。 获取“我的值”键的最简单方法是什么 注意:在这种情况下,我的字典是静态的。条目永远不会更改。您可以制作一个反向的dict revDict = dict((v,k) for k,v in myDict.items()) 或者,如果所有的值都不不同,则会出现这种情况 revDict = def

可能重复:

在python中,假设我们有一个字典:

mydict = {'myKey': 'myValue'}
要获取myKey的值,我们需要

myDict['myKey']
假设我们需要反过来做。 获取“我的值”键的最简单方法是什么


注意:在这种情况下,我的字典是静态的。条目永远不会更改。

您可以制作一个反向的dict

revDict = dict((v,k) for k,v in myDict.items())
或者,如果所有的值都不不同,则会出现这种情况

revDict = defaultdict(list)
for k,v in myDict:
    revDict[v].append(k)

您可以使用以下方法将字典转换为键列表排列的值:

newdict = {}
for k,v in mydict.iteritems():
    lst = newdict.get(v, [])
    newdict[v].append(k)
然后,您可以索引到该反向字典以查找密钥:

mykey = newdict.get(myvalue)
这应该起作用:

 keyPoint = [key for key, value in mydict.iteritems() if value == "myValue"][0]

这将返回键的值。

您可以创建一个“反向”字典,因为初始字典是静态的:

>>> revdict = dict([(mydict[key],key) for key in mydict])
>>> revdict['myValue']
'myKey'

键和值之间的映射是双射的(一对一)?或者一个值可以映射回多个键吗?我想我明白@Alex Reynolds的意思了。你不能在另一个字典中创建反向映射吗。如果问题的答案是“否”,则迭代字典并查找您的值的任何其他解决方案可能会导致多个键。在这种情况下,您仍然可以构建第二个字典,但将n元组集存储为值。