Python 可用于返回值的字典类型:key
我正在开发一个程序,其中我有一个字典Python 可用于返回值的字典类型:key,python,dictionary,key,Python,Dictionary,Key,我正在开发一个程序,其中我有一个字典dict['key']=value,但我也希望能够使用dict['value'],并让它返回键 Python中有这样的可逆数据结构吗 我想在我的字典中添加所有相反的内容,因为我所有的关系都是1:1,但我不认为这会有多大的效率,因为我会有两倍于我需要的条目。对于像这样的单个反向查找,只需使用 [k for k in dict if dict[k] == v] 如果您通常使用这种回溯,通常的方法是创建一个反向字典(请注意,在这种情况下,每个值超过一个键将导致有损
dict['key']=value
,但我也希望能够使用dict['value']
,并让它返回键
Python中有这样的可逆数据结构吗
我想在我的字典中添加所有相反的内容,因为我所有的关系都是1:1,但我不认为这会有多大的效率,因为我会有两倍于我需要的条目。对于像这样的单个反向查找,只需使用
[k for k in dict if dict[k] == v]
如果您通常使用这种回溯,通常的方法是创建一个反向字典(请注意,在这种情况下,每个值超过一个键将导致有损过程)——
最后,您也可以考虑将数据处理为长度为2的元组,如
data = [(a, b), (c, d)]
如果一个项目不依赖于另一个项目。我不知道python的标准集合库中有任何双向映射,但您可以查看包:
有人问过可能重复的问题,我认为您唯一的选择是双条目。@LukasR如果以前有人问过,正确的步骤是将其标记为重复。这里可能重复的问题是键应该是可散列的,而值可以是任何类型的(例如,列表
,它不可散列,不能用作键)
data = [(a, b), (c, d)]
>>> from bidict import bidict
>>> b = bidict(k='v')
>>> b['k']
'v'
>>> b.inv['v']
'k'