我正在制作一个我有字典dict['key'] = value
的程序,但我希望能够使用dict['value']
并让它返回key
。
Python中是否有这样的可逆数据结构?
我正在考虑将所有的对立面添加到我的字典中,因为我的所有关系都是1:1,但我认为这样做效率不高,因为我的条目数量是我需要的两倍。
答案 0 :(得分:3)
我不知道python的标准集合库中有任何双向映射,但您可以查看bidict包:
>>> from bidict import bidict
>>> b = bidict(k='v')
>>> b['k']
'v'
>>> b.inv['v']
'k'
答案 1 :(得分:2)
对于像这样的单反向查找,只需使用
[k for k in dict if dict[k] == v]
如果你经常使用这种反向跟踪,那么通常的做法就是创建一个反向字典(请注意,在这种情况下,每个值多个键会导致有损进程) -
rev_dict = {v: k for k, v in dict.items()}
最后,您还可以考虑将数据作为长度为2的元组处理 - 比如
data = [(a, b), (c, d)]
如果一个项目不依赖另一个项目。