相当于 Ruby 中 Python 的计数器

Mar*_*rco 10 ruby python

Python在模块中有Countercollections。它是一个用于计算可散列对象的类。例如:

cnt = Counter()
cnt['Anna'] += 3
cnt['John'] += 2
cnt['Anna'] += 4
print(cnt)
=> Counter({'Anna': 7, 'John': 2})
print(cnt['Mario'])
=> 0
Run Code Online (Sandbox Code Playgroud)

CounterRuby 中的等价物是什么?

编辑:

Counter级还提供了以下的数学运算和辅助方法:

c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c + d 
=> Counter({'a': 4, 'b': 3})
c - d
=> Counter({'a': 2})
c.most_common(1)
=> ['a']
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 5

cnt = Hash.new(0)
cnt["Anna"] += 3
cnt["John"] += 2
cnt["Anna"] += 4
cnt # => {"Anna" => 7, "John" => 2}
cnt["Mario"] #=> 0

c = {"a" => 3, "b" => 1}
d = {"a" => 1, "b" => 2}
c.merge(d){|_, c, d| c + d} # => {"a" => 4, "b" => 3}
c.merge(d){|_, c, d| c - d}.select{|_, v| v > 0} # => {"a" => 2}
c.max(1).map(&:first) # => ["a"]
Run Code Online (Sandbox Code Playgroud)