当前位置: 首页 > 知识库问答 >
问题:

Ruby:使用适当的组合从两个2d数组编译哈希

百里默
2023-03-14

我有两个二维数组:

product_names_array = [product_one_names = ["Product One A", "Product One B"],
                      product_two_names = ["Product Two C", "Product Two D"]]
product_prices_array = [product_one_price = [product_one_price_1, product_one_price_2, product_one_price_3, product_one_price_4],
                        product_two_price = [product_two_price_1, product_two_price_2, product_two_price_3, product_two_price_4]]

在第一个 2D 阵列中,我有 2 个子阵列(实际上有 16 个) - 每个产品一个。它们中的每一个都为同一产品列出了不同的名称(每个产品可以有 1 到 22 个备用名称)。

在第二个 2D 阵列中,我有 2 个子阵列(实际上也有 16 个) - 每个产品每个价目表一个。它们中的每一个都列出了来自前一个 2D 数组中相应子数组的同一产品(实际上为 10 个价格选项)的不同价格(实际上,10 个价格选项)。

我想从数组中得到这样一个散列:

my_hash = {"Product One A" => [product_one_price_1, product_one_price_2, product_one_price_3, product_one_price_4],
          "Product One B" => [product_one_price_1, product_one_price_2, product_one_price_3, product_one_price_4],
          "Product One C" => [product_two_price_1, product_two_price_2, product_two_price_3, product_two_price_4],
          "Product Two D" => [product_two_price_1, product_two_price_2, product_two_price_3, product_two_price_4]}

如您所见,第一个 2D 数组中的每个值都会与第二个 2D 数组中的每个相应数组创建所有可能的组合。

然后我想像这样使用创建的哈希:

puts my_hash["Product One B"[2]] # => product_one_price_3

(我怀疑这个表达的正确性,所以如果你也能帮助我,我会很感激……)

我还想避免定义新方法,因为此代码将在插件 Redmine 的计算自定义字段中使用,并且它不接受 def。

我已经重读了一堆关于Ruby中数组和散列的信息,嗯,到目前为止,我甚至还没有接近解决我的问题。任何帮助都是有益的!

共有1个答案

曾永新
2023-03-14

您可以从< code>zip方法中受益,该方法将组合两个数组中的相应元素< br> ([0] - [0],< code>[1] - [1]等等)

result = product_names_array.zip(product_prices_array)
  .flat_map { |names, prices| names.map { |name| [name, prices] }}
  .to_h

result

# output
# product_one_prices: 11, 12, 13, 14
# product_two_prices: 21, 22, 23, 24
{
  "Product One A"=>[11, 12, 13, 14], 
  "Product One B"=>[11, 12, 13, 14], 
  "Product Two C"=>[21, 22, 23, 24], 
  "Product Two D"=>[21, 22, 23, 24]
}
 类似资料:
  • 寻找一种优雅的方式以特殊的方式合并两个散列数组: 如果名称关键字匹配,则结果必须包含< code>new_data的所有名称散列,仅包含< code>old_data的额外数据。 我的第一次尝试是这样的,但是它创建了一个额外的散列:

  • 我正在使用Redmine和Computed自定义字段插件。 该插件提供了计算自定义字段的可能性,并接受ruby代码进行计算。 在红矿中,我有一个项目(Project_id=11),其中我在每个问题的单独自定义字段中计算产品的成本。它看起来像这样: 每期都有一个自定义字段 (cf_id = 31) 用于选择产品:梨、菠萝、西红柿、椰子。 每个问题都有一个自定义字段 (cf_id = 32),用于输入

  • 问题内容: 我有2个1d数组,而我正在尝试将它们填充到JAVA中的单个2d数组中。 例如: 结果应为: 我该怎么办?我目前有这样的事情: 我有点被困在那里… 问题答案: 2D数组是数组的数组。那你为什么不试试这个呢? 为了确保它是如此简单并且可以正常工作,请进行以下测试:

  • 问题内容: 我试图在尝试对6参数函数进行任何复杂操作之前,遍历6参数函数的参数空间,以研究其数值行为,因此,我正在寻找一种有效的方法来执行此操作。 我的函数将6-dim numpy数组中给出的浮点值作为输入。我最初尝试做的是: 首先,我创建了一个函数,该函数接受2个数组并生成一个包含两个数组中值的所有组合的数组: 然后,我曾经将其应用于同一数组的m个副本: 最后,我这样评估我的功能: 这工作,但它

  • 嗨,我有两个哈希数组,如下所示 如何将它们合并到单个哈希数组中作为〔{“name”= 因为我需要根据哈希转换的管道分隔cucumber表来验证它们,例如|name|value|rihan|true||gihan|true| 对于cucumber表,我使用以下函数将其转换为哈希 对于实际的 JSON 响应,我正在使用递归函数将其提取到两个哈希数组 [A] 和 [B] 上方,但我不确定如何合并它们以与

  • 我正在尝试使用 json 对象的 s3api cli 为 aws 放置对象标记创建“TagSet”。我已经将 json 解析为哈希,这是我实现最终目标的最大成功。 示例 JSON: 结束目标示例: 到目前为止,我已经将 json 解析为哈希,然后使用以下方法将键和值拆分为 2 个数组: 我想我可以遍历每个数组,然后将它们插入到一个数组中。但是我得到的输出是一个递归列表,其中包含了每个值重复出现的所