【发布时间】:2014-09-02 13:24:06
【问题描述】:
我有两个哈希/字典。
第一个哈希代表价格桶,看起来像:
hash = {"499 & Under" => "0 TO 499", "500 - 999" => "500 TO 999", "1000 - 1499" => "1000 TO 1499",
"1500 - 2499" => "1500 TO 2499", "2500 & Above" => "2500 TO *"}
第二个哈希对应于给定桶中的项目数,但它只有桶的下限作为键。它看起来像:
{0=>3605, 500=>3078, 1000=>1656, 1500=>743, 2000=>333}
第二个哈希的桶大小为 500。此外,我还有第二个哈希的任何桶中不适合的项目数量的信息(在本例中为 >2500)。
我想在这两个哈希之间创建一个映射。
到目前为止我做了什么:
buckets = {"499 & Under" => "0 TO 499", "500 - 999" => "500 TO 999", "1000 - 1499" => "1000 TO 1499", "1500 - 2499" => "1500 TO 2499", "2500 & Above" => "2500 TO *"}
counts = {0=>3605, 500=>3078, 1000=>1656, 1500=>743, 2000=>333}
gap = 500 ##bucket size of counts hash
after = 681 ##num of items not in any bucket
x = counts
counts = Hash[x.map{|k,v| ["#{k.to_s} TO #{k+gap-1}",v]}]
##{"0 TO 499"=>3605, "500 TO 999"=>3078, "1000 TO 1499"=>1656, "1500 TO 1999"=>743, "2000 TO 2499"=>333}
counts["#{x.keys.max+gap} TO *"] = after
##{"0 TO 499"=>3605, "500 TO 999"=>3078, "1000 TO 1499"=>1656, "1500 TO 1999"=>743, "2000 TO 2499"=>333, "2500 TO *"=>681}
如何合并计数哈希中的两个元素:
"1500 TO 1999"=>743, "2000 TO 2499"=>333
获取计数:
"1500 - 2499" => "1500 TO 2499"
价格区间?
【问题讨论】:
-
@jonrsharpe:我将其标记为 python,因为逻辑与语言无关,并且哈希和字典的相似性无关紧要
-
如果这确实是一个与语言无关的问题(即概念性、算法性),请在 Computer Science 堆栈交换中提问。如果您想知道如何使用特定语言执行此操作,则可以在此处使用,但应按此进行标记。
标签: ruby dictionary hashmap