2

字典通常适合按键查找值,但按键查找速度很慢

for k,v in dictionary.items():
    if v = myValue:
        return k

是否已经有一个数据结构可以同时生成 key->value 和 ke

4

3 回答 3

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'
于 2012-09-21T09:24:50.353 回答
5

只需创建一个倒置映射:

from collections import defaultdict
inverted = defaultdict(list)
for k, v in dictionary.iteritems():
    inverted[v].append(k)

请注意,上面的代码处理重复值;inverted[v]返回保存该值的键列表。

如果您的值也是唯一的,则可以使用简单的 dict 代替defaultdict

inverted = { v: k for k, v in dictionary.iteritems() }

或者,在 python 3 中,items()字典视图在哪里:

inverted = { v: k for k, v in dictionary.items() }
于 2012-09-21T09:25:17.840 回答
0

蟒蛇 3:

revdict = {v:k for k,v in dictionary.items()}

(改为使用 Python 2 .iteritems()

于 2012-09-21T09:27:37.870 回答