【发布时间】:2014-10-29 19:06:00
【问题描述】:
如果字典包含您可以引用的内容,您可以使用一次字典查找默认或更新它:
d.setdefault('k', []).append(2)
但是,如果字典条目是数字,则无法以相同的方式修改它们:
d.setdefault('k', 0) += 1 # doesn't work
相反,您需要进行两次 dict 查找,一次用于读取,一次用于写入:
d['a'] = d.get('a', 0) + 1
对于具有大量键的字典来说,这似乎不是一个好主意。那么,有没有办法对包含数字的字典进行默认或更新操作?或者,换一种说法,在此类字典上应用默认或更新操作的最高效方式是什么?
【问题讨论】:
-
"对于具有大量键的字典来说,这似乎不是一个好主意。"定义“巨大”。因为它可能有数十万。
-
足够大以至于字典索引遍历成本很高。如果那是数十万,那就这样吧。
-
大概几千万吧。并不是说我手头有任何证据……
-
dict查找只有在您开始获得可观数量的哈希冲突时才会开始变慢 - 这在 32 位系统的数百万条目和 64 位系统的数万亿条目中的某处。
标签: python performance dictionary python-2.6