我有一个电子邮件地址阵列(大概超过50,000个),我有兴趣计算特定电子邮件域的频率。举例来说,如果我有用分隔符分隔电子邮件字符串
emails = [
'[email protected]',
'[email protected]',
'[email protected]',
'[email protected]',
'[email protected]'
]
,我很感兴趣,其中电子邮件域出现最多的,我希望与频率2
返回'gmail'
。
要做到这一点,我认为这是一个好主意,通过数组并丢弃在@
之前发生的所有事情,并将域保存为新数组,然后我可以迭代。我将如何做到这一点?
您可以将它组合到'counts = emails.each_with_object(Hash.new(0)){| t,h | ...}' – Stefan
谢谢!如果我然后想根据整数来排序信息,我该怎么做?例如,如果我使用'counts.sort'(取自您使用的相同计数),我会得到一个输出,如[gmail.com,2],[yahoo.com,1] ..'这将按字母顺序排列。我想用数字顺序排序,换句话说,用频率最高的电子邮件排序 – Chumbawoo
不要紧,它似乎使用'counts.sort_by {| a,b | b.to_i}' – Chumbawoo