我使用 setdefault 来计算这样的实例(这是精简版):
user_to_count_map = {}
for username in list_of_usernames:
x = user_to_count_map.setdefault(username, 0)
x += 1
user_to_count_map[username] = x + 1
for username in sorted(usernmae_to_count_map):
print username, user_to_count_map[username]
我不喜欢分配回 map ,因为随着多次计数的增加,实际代码更加复杂。但我似乎确实需要这样做。有没有简单的解决方法?
请您参考如下方法:
要对元素进行计数,您应该使用 Counter :
import collections
user_counts = collections.Counter(list_of_usernames)
print(user_counts.most_common())
或者,get dict 的方法与 setdefault 相同,但没有将值存储在 dict 中的副作用:
user_to_count_map = {}
for username in list_of_usernames:
user_to_count_map[username] = user_to_count_map.get(username, 0) + 1
