【问题标题】:How can I combine these two arrays into a hash?如何将这两个数组组合成一个哈希?
【发布时间】:2014-05-19 15:04:01
【问题描述】:

我有以下两个数组:

Classification.product.map{|p|[p.description, p.id]}

[["Antiques", 1], ["Art", 2], ["Auto", 3], ["Books", 4], ["Clothing & Accessories", 5], ["Collectibles/Trading Cards", 6], ["Electronics & Computers", 7], ["Event Decoration", 8], ["Furniture", 9], ["Home & Garden", 10], ["Instruments", 11], ["Kids & Baby", 12], ["Movies & Music", 13], ["Property Rentals", 14], ["Shoes/Sneakers", 15], ["Sports & Outdoors", 16], ["Tickets", 17], ["Toys & Games", 18], ["Video Games", 19], ["Other", 20]]

Classification.service.map{|p|[p.description, p.id]}

[["Beauty", 21], ["Child Care", 22], ["Cleaning", 23], ["Computer/Technology", 24], ["Culinary", 25], ["Custom Goods", 26], ["Decorating/Interior Design", 27], ["Fashion", 28], ["Fitness", 29], ["Health/Wellbeing", 30], ["Home Improvement", 31], ["Landscaping/Yard", 32], ["Odd Jobs/Handymen", 33], ["Organizing", 34], ["Event Planning", 35], ["Pet Care", 36], ["Photography/Video", 37], ["Professional Services", 38], ["Tutoring/Instruction", 39], ["Other", 40]]

我想要做的是创建一个散列,其中每个键是第一个数组中的一个元素,每个值是第二个数组中的一个元素。

所以,理想情况下它应该是这样的:

{["Antiques", 1]=>["Beauty", 21], ["Art", 2]=>["Child Care", 22], etc.}

恰好有相同数量的产品和服务分类;但是,如果它们不相等,我希望代码仍然可以工作。因此,如果其中一个的分类少于另一个,它应该插入一个空白键/值。

我该怎么做/可以做到吗?

【问题讨论】:

    标签: ruby arrays hash


    【解决方案1】:

    你可以这样做:

    Hash[
        Classification.product.map{|p|[p.description, p.id]}.zip(
            Classification.service.map{|p|[p.description, p.id]})]
    

    这有点令人困惑。最重要的是我使用了两件事:

    • Hash[a] 其中a 是数组,其中每个元素都是一个包含两个元素的数组,生成一个哈希,其中键是第一个元素,值是第二个。

    • zip“压缩”两个数组,从而生成一个包含两个元素的数组。

    【讨论】:

    • Yours 返回一个数组,其中键是 product.description,值是 service.id
    • 它看起来像这样:{"Antiques"=>21, "Art"=>22, "Auto"=>23, "Books"=>24, "Clothing & Accessories"=>25 , "收藏品/交易卡"=>26, "电子与电脑"=>27, "活动装饰"=>28, "家具"=>29, "家居与园艺"=>30, "仪器"=>31 , “儿童与婴儿”=>32, “电影与音乐”=>33, “物业租赁”=>34, “鞋子/运动鞋”=>35, “运动与户外”=>36, “门票”=> 37, “玩具和游戏”=>38, “视频游戏”=>39, “其他”=>40}
    • @Snubber 对不起,我误读了这个问题。我做的比我应该做的多
    • @Snubber 现已修复,对此感到抱歉。
    • 它现在返回每个服务分类的哈希
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 2017-09-26
    • 2014-05-31
    • 2013-04-18
    • 2016-10-07
    • 2011-09-17
    • 2018-03-12
    相关资源
    最近更新 更多