You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ruby将邮箱数组按顶级域名(TLD)分组为Hash格式

问题原因
  • 代码直接将哈希中TLD对应键的赋值为单个邮箱字符串,同TLD的新值会覆盖旧值,最终仅保留最后一个匹配邮箱
  • 现有逻辑没有为每个TLD对应的值初始化数组结构,也没有做元素追加操作
  • 代码中的if last_el == e.partition(".").last判断完全冗余,该表达式恒为真,无实际作用
修复方案

基础修改版(贴合你原有写法逻辑)

def group_by_tld(emails)
  new_hash = {}
  emails.each do |e|
    # 提取顶级域名,转成符号类型匹配期望返回的key格式
    tld = e.split(".").last.to_sym
    # 如果该TLD对应的数组不存在则初始化
    new_hash[tld] ||= []
    # 将当前邮箱追加到对应数组
    new_hash[tld] << e
  end
  new_hash
end

简洁写法(使用Ruby内置分组方法)

Ruby原生的group_by方法可以直接实现分组需求,代码更精简:

def group_by_tld(emails)
  emails.group_by { |email| email.split(".").last.to_sym }
end

两种写法运行后都可以得到你期望的返回结果。

内容的提问来源于stack exchange,提问作者Onur Karadeniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:27:04