字典通常很适合按键查找值,但按值查找键非常慢
for k,v in dictionary.items():
if v = myValue:
return k
Run Code Online (Sandbox Code Playgroud)
是否已有一个数据结构,使key-> value和ke
小智 8
你可以试试bidict:
>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john'] # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie'] # use slice for the inverse mapping
'john'
Run Code Online (Sandbox Code Playgroud)
只需创建倒置映射:
from collections import defaultdict
inverted = defaultdict(list)
for k, v in dictionary.iteritems():
inverted[v].append(k)
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码处理重复值; inverted[v]返回包含该值的键列表.
如果您的值也是唯一的,则可以使用简单的dict代替defaultdict:
inverted = { v: k for k, v in dictionary.iteritems() }
Run Code Online (Sandbox Code Playgroud)
或者,在python 3中,where items()是一个字典视图:
inverted = { v: k for k, v in dictionary.items() }
Run Code Online (Sandbox Code Playgroud)