【发布时间】:2011-06-09 13:05:33
【问题描述】:
我正在尝试创建一个很好的接口来访问一个数据集,其中每个值都有几个可能的键。例如,假设我对数据集中的每个值都有一个 number 和一个 name。我希望能够使用数字或名称访问每个值。
我考虑了几种可能的实现方式:
使用两个单独的字典,一个用于按数字组织的数据值,另一个用于按名称组织的数据值。
只需将两个键分配给字典中的相同值。
创建字典,将每个名称映射到相应的数字,反之亦然
尝试创建一个哈希函数,将每个名称映射到一个数字等(与上述有关)
创建一个对象来封装所有三段数据,然后使用一个键将字典键映射到对象,然后简单地搜索字典以将另一个键映射到对象。
这些似乎都不理想。第一个看起来丑陋且无法维护。第二个似乎也很脆弱。第三/第四似乎是合理的,但似乎需要大量手动规范或过于复杂的实现。最后,第五个在其中一个查找中失去了恒定时间性能。
在 C/C++ 中,我相信我会使用指针来引用来自不同键的相同数据。
我知道这个问题与非键列的数据库查找问题非常相似,但是,我希望(如果可能的话)保持 Python 字典的近似 O(1) 性能。
实现这种数据结构的最 Pythonic 方式是什么?
【问题讨论】:
标签: python data-structures map