Seb*_*ino 20 python optimization dictionary
假设有这样的结构:
{'key1' : { 'key2' : { .... { 'keyn' : 'value' } ... } } }
Run Code Online (Sandbox Code Playgroud)
使用python,我试图确定两种不同方法的优点/缺点:
{'key1' : { 'key2' : { .... { 'keyn' : 'value' } ... } } } # A. nested dictionary
{('key1', 'key2', ...., 'keyn') : 'value'} # B. a dictionary with a tuple used like key
Run Code Online (Sandbox Code Playgroud)
然后我有兴趣知道,最好的(A或B)是什么:
小智 10
没有深入细节(无论如何都是高度依赖于实现的,并且可能会被下一个天才无效并调整字典实现):
你看,虽然存在一些内存差异,但性能上应该没有任何明显的差异.我想,后者不会引人注目.单元素字典是140字节,十元素元组也是140字节(根据Python 3.2 sys.getsizeof).因此即使使用(已经不切实际的,我的直觉)十级嵌套,你的差异也会略微超过一KB - 如果嵌套的dicts有多个项目(取决于确切的加载因子),可能会更少.对于拥有数百个此类数据结构内存的数据运算应用程序来说,这太过分了,但大多数对象并不经常创建.
您应该问问自己哪种模型更适合您的问题.考虑到第二种方式要求您一次获得值的所有键,而第二种方法允许以递增方式获取值.