ruby - 如何迭代 3D 散列
问题描述
我有一个使用yaml
文件中的数据生成的 3D 哈希。我需要获取每个数组的键并将其加入它的值,以便在表单的选择字段上显示它们。
我尝试使用each
, for...in
, hash.keys
,但它们将散列返回为一个而不是分隔hash.values
值map
这是哈希的结构:
{
"AC"=>
{
"ACRELANDIA"=>419,
"ASSIS BRASIL"=>111
},
"AL"=>
{
"AGUA BRANCA"=>2701,
"ANADIA"=>2703
}
}
最后我希望结果是这样的:
AC - ACRELANDIA: 419
AC - ASSIS BRASIL: 111
...等等每个城市。
解决方案
您可以执行以下操作,
hash = {
"AC"=> { "ACRELANDIA"=>419, "ASSIS BRASIL"=>111 },
"AL"=> { "AGUA BRANCA"=>2701, "ANADIA"=>2703 }
}
hash.flat_map { |x,y| y.map { |z| "#{x} - #{z[0]}: #{z[1]}" } }
# => ["AC - ACRELANDIA: 419", "AC - ASSIS BRASIL: 111", "AL - AGUA BRANCA: 2701", "AL - ANADIA: 2703"]
推荐阅读
- swagger - 如何使用 Swagger Codegen 生成整个 Pageable 对象,而不是其中的每个属性?
- xamarin - 如何在 PCL 中获取 xamarin.Android 值
- apache-kafka - 问题 Kafka Mirror Maker 从 1.0.2 更新到 2.2.0 - 无法构建消费者 - 没有可解析的引导 URL
- android - 不要完成 gradle build 运行
- arrays - 外部保存一个巨大 JSON 文件的特定值(一个巨大的数组) - 节点
- python - 使用 pandas 的幼稚预测
- vb.net - 从字符串中删除重复字符并找到最短的
- php - 如何在安装了 WAMPSERVER 的 WordPress 中修复“ERR_CONNECTION_TIMED_OUT”错误?
- r - 强制尺寸美学缩放到给定的休息时间
- sql-server - where 子句中的动态 T-SQL 存储过程