查看collections.py
我看到的源代码,.items
而不是.iteritems
在某些情况下使用它,我认为这是有意成为 Python 源代码的一部分。
例如。在update
(已删除的评论)中,.iteritems
使用
def update(self, iterable=None, **kwds):
520
521 if iterable is not None:
522 if isinstance(iterable, Mapping):
523 if self:
524 self_get = self.get
525 for elem, count in iterable.iteritems():
526 self[elem] = self_get(elem, 0) + count
527 else:
528 super(Counter, self).update(iterable) # fast path when counter is empty
529 else:
530 self_get = self.get
531 for elem in iterable:
532 self[elem] = self_get(elem, 0) + 1
533 if kwds:
534 self.update(kwds)
但是使用了 in__add__
和其他带有Counter
s 的.items
操作
590 def __add__(self, other):
597 if not isinstance(other, Counter):
598 return NotImplemented
599 result = Counter()
600 for elem, count in self.items():
601 newcount = count + other[elem]
602 if newcount > 0:
603 result[elem] = newcount
604 for elem, count in other.items():
605 if elem not in self and count > 0:
606 result[elem] = count
607 return result
我知道使用小字典的情况会更快.items
,但你不能相信它们总是很小,或者这是 Python 的猜测?我真的不明白为什么他们不会.iteritems
在每种情况下都使用。