nic*_*ame 1 python map data-structures
我正在尝试创建一个很好的接口来访问数据集,其中每个值都有几个可能的键.例如,假设我为数据集中的每个值都有一个数字和一个名称.我希望能够使用数字或名称访问每个值.
我考虑了几种可能的实现:
使用两个单独的词典,一个用于按编号组织的数据值,另一个用于按名称组织的数据值.
只需将两个键分配给字典中的相同值即可.
创建将每个名称映射到相应数字的字典,反之亦然
尝试创建将每个名称映射到数字等的哈希函数(与上述相关)
创建一个对象来封装所有三个数据,然后使用一个键将字典键映射到对象,只需搜索字典以将另一个键映射到对象.
这些都不是理想的.第一个似乎是丑陋和不可维护的.第二个似乎也很脆弱.第三个/第四个似乎是合理的,但似乎需要很多手动规范或过于复杂的实现.最后,第五个失去了其中一个查找的恒定时间性能.
在C/C++中,我相信我会使用指针来引用来自不同键的同一段数据.
我知道问题非常类似于非键列的数据库查找问题,但是,我希望(如果可能的话)维护Python字典的近似O(1)性能.
实现这种数据结构的最Pythonic方法是什么?
In C/C++, I believe that I would use pointers to reference the same piece of
data from different keys.
Run Code Online (Sandbox Code Playgroud)
这与选项号2相对应.在Python中,字典确实存储了指向对象的指针.这意味着有两个键指向同一个对象将不会创建两次对象.