我有一个文件,每行都有数字:
0101
1010
1311
0101
1311
431
1010
431
420
我想要一个包含每个数字出现次数的哈希值,在本例中:
{0101 => 2, 1010 => 2, 1311 => 2, 431 => 2, 420 => 1}
我怎样才能做到这一点?
简单的单行代码,给定一个数组items
:
items.inject(Hash.new(0)) {|hash, item| hash[item] += 1; hash}
怎么运行的:
Hash.new(0)
创建一个新的哈希,其中访问未定义的键将返回 0。
inject(foo)
使用给定块迭代数组。对于第一次迭代,它通过foo
,并且在进一步的迭代中,它传递最后一次迭代的返回值。
另一种写法是:
hash = Hash.new(0)
items.each {|item| hash[item] += 1}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)