1
Ruby的新品牌。我试图使用发送的电子邮件数量对发件人(发件人)的重复列表进行排序。此代码正在工作,但它按字母顺序排序。我无法弄清楚如何对它进行排序,从而使电子邮件的最#是在上面,等排序哈希值一个值不是其他
results = []
mail_count = imap.search(["SINCE", @this_week.strftime("%d-%b-%Y")]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
@from_array = envelope.from[0].name.to_a
results << @from_array
end
# make the hash default to 0 so that += will work correctly
from_count = Hash.new(0)
# iterate over the array, counting duplicate entries
results.each do |v|
from_count[v] += 1
end
from_count.sort_by do |k, v| v
puts "#{v} -- #{k}"
end
当我这样做,并试图添加“puts”#{v} - #{k}“我得到一个错误未定义的局部变量或方法'v' – krapdagn 2012-02-22 06:35:13
不要添加puts语句。puts'返回'nil'并拧紧排序 – 2012-02-22 06:36:52
我想我已经完全掌握了 - 不知道如何打印排序后的Hash格式,它表示10 - FROMa,9 - FROMb等格式它用于打印它很好,只是按字母顺序排序,而不是数字排序。 – krapdagn 2012-02-22 06:38:09