数据结构应满足以下目的:
- 每个对象都是唯一的,具有某些键值对
- 键和值不是预先确定的,可以包含任何字符串值
- 查询对象应该很快
示例:
object_123({'stupid':True, 'foo':'bar', ...})
struction.get({'stupid':True, 'foo':'bar', ...})
应返回object_123
最好使用标准库提供的标准 Python 数据结构来实现此结构。
你会如何实现这个?
最佳答案
我能想到的最简单的解决方案是使用排序的元组键:
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
另一种选择是为您的键提出您自己的哈希方案(通过将它们包装在类中或仅使用字典中的数字键),但根据您的访问模式,这可能会更慢。
关于Python数据结构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572037/