Ric*_*ica 0 python cpython python-3.x
新的dict是如此惊人,我预计人们将开始使用它们 - 索引作为一切的关键.他们应该吗?如果没有,为什么不呢?
我一直在关注python字典实现的非常令人兴奋的(对我而言)开发/更改.总结:实现已经改变,现在保留了字典的顺序,现在它们更紧凑/更高效:
https://twitter.com/raymondh/status/773978885092323328?lang=en
此外:看起来永久性的订单保存虽然目前无法保证,但不可避免.
我的问题是:鉴于内存效率得到了极大的提高,订单得以保留,并且你得到更快的项目删除/插入a dict,是否有任何充分的理由不使用字典来处理任何项目序列,使用索引作为键?
扩展问题:更改底层序列(list和tuple)实现以使用与保留顺序相同的技术dict(再次:使用索引作为键/哈希)是否有意义?
对于那些参加过一些计算机科学课程的人来说,这个问题的答案可能非常明显.我只是一个doofus土木工程师(一点点自嘲幽默对灵魂有益),所以要温柔.
编辑:
我也意识到,dict当前形式的实用性需要扩展一点,以提供所有的铃声/口哨声list.目前缺少的一些东西包括insert方法,reverse方法和切片(当然,功能上的巨大漏洞).但是这些是添加到一个完整的有序dict对象是有意义的事情.
或者,也许添加一个dlist或者ldict,对于只接受密钥的collections模块,以及所有缺少的功能都是有用的.更多的内存使用,但更快的修改.dictintlist
对于初学者,有内存考虑因素:
l = [ i for i in range(100000) ]
d = { i:i for i in range(100000) }
print("List: {}, Dict: {}".format(sys.getsizeof(l), sys.getsizeof(d)))
Run Code Online (Sandbox Code Playgroud)
输出:List: 824464, Dict: 6291552......
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |