Skip to main content
 首页 » 编程设计

python之Python 中每个值有多个键的字典

2025年05月04日10exmyth

我正在尝试创建一个漂亮的界面来访问数据集,其中每个值都有几个可能的键。例如,假设我对数据集中的每个值都有一个编号 和一个名称。我希望能够使用数字或名称访问每个值。

我考虑了几种可能的实现方式:

  1. 使用两个单独的字典,一个用于按数字组织的数据值,另一个用于按名称组织的数据值。

  2. 简单地将两个键分配给字典中的相同值。

  3. 创建字典将每个名字映射到相应的数字,反之亦然

  4. 尝试创建一个哈希函数,将每个名字映射到一个数字等(与上述相关)

  5. 创建一个对象来封装所有三段数据,然后使用一个键将字典键映射到对象,然后简单地搜索字典以将另一个键映射到对象。

这些似乎都不理想。第一个看起来丑陋且无法维护。第二个似乎也很脆弱。第三个/第四个似乎有道理,但似乎需要大量手动规范或过于复杂的实现。最后,第五个失去了其中一个查找的恒定时间性能。

在 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. 

这与选项编号 2 相对应。在 Python 中,字典实际上存储指向对象的指针。这意味着让两个键指向同一个对象不会创建对象两次。