我在头脑中有一个类似于以元组作为键的dict的结构,只是您可以只使用一个元组元素来查找条目。在
类似的东西。不是真正的Python代码,只是一个想法)
>>> d[(100, "apple")] = 5.0 # putting entry into dict
>>> d[(100, "pear")] = 10.0 # putting entry into dict
>>> d[(200, "pear")] = 10.0 # putting entry into dict
>>> d[100] # O(1) lookup
[("apple", 5.0), ("pear", 10.0)]
>>> d["pear"] # O(1) lookup
[(100, 10.0), (200, 10.0)]
当前不能使用defaultdict()
执行此操作。在Python中实现这一点的最佳方法是什么,或者使用的最佳数据结构是什么?我希望查找是O(1),就像是对dict一样
在这种情况下,元组元素和值都不唯一。在
我正在考虑:
为什么不使用
namedtuple
之类的现在使用
^{pr2}$fruitcount
字典作为更多信息请参考:python-docs
有两种常见的可能性。在
__getitem__
和{dict
来实现您的需求。关于这件事有几个问题。在来回答你的问题
您还可以使用一个对象关系映射器或另一个类似键值存储的数据库,它可能更符合您的需要。在
使用数据库并不比查字典快。但是您有一些优势,比如持久性和查询API。如果数据库能满足您的需求,我不会提前优化速度。这取决于你。在
考虑如下内容:
这允许元组或其第一个元素在
^{pr2}$O(1)
中进行查找。然后可以为key[1]
实现相同的功能。使用字典字典也可以对键O(1)
的另一部分进行后续查找。使用中:注意,这假设每个组合
key[0], key[1]
将只有一个val
。在参见How to "perfectly" override a dict?关于定制词典的制作。在
相关问题 更多 >
编程相关推荐