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

如何使用group_by筛选包含多个唯一state值的district_code

实现代码

你可以在group_by的基础上结合transform_values和select链式调用完成筛选,完整写法如下:

roads = [['1004', 'VIC'], ['1004', 'BRI'], ['1011', 'VIC'], ['1010', 'ACT'], ['1000', 'ACT'], ['1019', 'VIC'], ['1004', 'VIC']]

# Ruby 2.7+ 支持numbered parameter的写法
result = roads.group_by { |ro| ro[0] }
              .transform_values { |groups| groups.map { _2 }.uniq }
              .select { |_, states| states.size > 1 }

# 兼容所有Ruby版本的写法
result = roads.group_by { |ro| ro[0] }
              .transform_values { |groups| groups.map { |ro| ro[1] }.uniq }
              .select { |district_code, states| states.size > 1 }

puts result
# 输出:{"1004"=>["VIC", "BRI"]}

步骤说明

  1. group_by { |ro| ro[0] }:按district_code(数组第一个元素)分组,得到你示例中展示的分组结果。
  2. transform_values:对每个分组的值做转换:提取每个条目中的state(数组第二个元素),再用uniq去重,得到每个district_code对应的唯一state数组。
  3. select:筛选出唯一state数组长度大于1的条目,即关联了超过1个唯一state的district_code。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:01