在 Python 中,具有对象双向映射的最佳数据结构是什么,每对对象都有标志值?例如,假设我有两个要配对的男性和女性。我想要一个数据结构来存储配对,这样我就可以访问每个女人对应的男人,每个男人对应的女人,比方说,一个代表这对夫妇值(value)的数字。
关键特征是我想以恒定的时间(大约是字典中的键访问的时间)访问所有这些数据,而不会浪费资源进行构建。
如果不是因为“标志值”的特殊性,一个bidict
来自 this post 中建议的图书馆绝对完美。事实上,每次我在我的 all-stars-couples 数据结构中添加一对时,它都会自动更新以避免一夫多妻制:
couples = bidict({
'leonard' : 'penny',
'howard' : 'bernadette',
'sheldon' : 'amy'
})
couples.forceput('stephen', 'amy')
print couples
>> bidict({'stephen': 'amy', 'leonard': 'penny', 'howard': 'bernadette'})
我现在正在寻求有关实现 quality
功能的最有效和 pythonic 方式的建议,例如:
quality('stephen', 'amy')
>> 0.4
couples.forceput('sheldon', 'amy', quality = 1.0)
quality('sheldon', 'amy')
>> 1.0
quality('stephen', 'amy')
>> Raise KeyError
最佳答案
考虑元组是可散列的。您可以创建一个 dict
,将一对映射到您想要的任何数据,包括质量:
quality = dict()
quality[ ('stephen', 'amy') ] = 0.4
关于python - 使用标志值在 Python 中高效双向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433793/