有没有办法在一行中构建没有循环('for')的数字频率字典?



假设我们有一个带有重复的数字。是否可以构造没有循环('for')和一行的数字频率字典?例如,使用列表理解或地图。我尝试过,但我无法提出更好的选择:

d_num = {}
for number in x:
    d_num.update({number : 1} if d_num.get(number) == None else {number : d_num.get(number) + 1})

python遵循电池的理念,包括,在您的情况下,您可以简单地使用collections.Counter

from collections import Counter
Counter(x)

如果您希望它作为普通字典,则可以轻松地将其转换回。但是Counter的行为(几乎)像字典一样(几乎),因此几乎没有必要:

dict(Counter(x))

最新更新