【发布时间】:2016-11-09 18:28:43
【问题描述】:
我只是遇到了一个需要列出列表的问题,例如l = [1, 2, 3, 4],转换成 dic,例如{1:1、2:1、3:1、4:1}。我只想知道我应该使用 collections.Counter() 还是自己写一个循环来做到这一点。内置方法比自己写循环快吗?
【问题讨论】:
-
使用
collections.Counter(),因为它就是这样做的。为什么要编写自己的代码 ;) -
你总是可以测试如果有更快的东西,使用
timeit模块。在 Python 3 中,Counter对象具有 C 性能改进,并且确实非常快。 -
@MartijnPieters:我使用
timeit计算,我自己的代码比Counter快。可能是我做错了什么,但在我看来一切都一样 -
@anonymous:我确实提到在 Python 3 中它更快。您可能在使用 Python 2 吗?请参阅下面的答案以获得基准。
-
是的,我使用的是 Python 2。可能就是这个原因。