Skip to main content
 首页 » 编程设计

python之使用 setdefault,但不想重新分配回 map/dict

2025年05月04日25itcoder

我使用 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