Python数据结构设计

xyz*_*123 1 python data-structures

数据结构应满足以下目的:

  • 每个对象对于某些键值对是唯一的
  • 键和值不是预先确定的,可以包含任何字符串值
  • 查询对象应该很快

例:

  • object_123({'stupid':True, 'foo':'bar', ...})
  • structure.get({'stupid':True, 'foo':'bar', ...}) 应该回来 object_123

最佳地,该结构通过标准库提供的标准python数据结构来实现.

你会如何实现这个?

Nic*_*ley 5

我能想到的最简单的解决方案是使用排序的元组键:

def key(d): return tuple(sorted(d.items()))

x = {}
x[key({'stupid':True, 'foo':'bar', ...})] = object_123

x.get(key({'stupid':True, 'foo':'bar', ...})) => object_123
Run Code Online (Sandbox Code Playgroud)

另一种选择是为你的键提出你自己的哈希方案(通过将它们包装在一个类中或者只使用字典中的数字键),但是根据你的访问模式,这可能会更慢.