Rails中计算两个哈希表对应键值的百分比
嘿,这个需求很清晰嘛!要生成哈希表C,把B里每个键对应的值除以A的对应值转成百分比,我给你写两种常见语言的实现方式,你按需选就行~
Ruby 实现
因为你给出的哈希表写法是Ruby风格的,先给这个版本:
# 定义原始哈希表 A = {"2019.01" => 100, "2019.02" => 100, "2019.03" => 100, "2019.04" => 100} B = {"2019.01" => 20, "2019.02" => 30, "2019.03" => 50, "2019.04" => 40} # 生成目标哈希表C C = A.each_with_object({}) do |(key, a_val), result| # 先确保B里有对应的键,避免报错 next unless B.key?(key) # 计算百分比:B值/A值 *100,转成整数后拼接% percentage = (B[key].to_f / a_val * 100).to_i result[key] = "#{percentage}%" end # 输出结果 p C # => {"2019.01"=>"20%", "2019.02"=>"30%", "2019.03"=>"50%", "2019.04"=>"40%"}
Python 实现
如果用Python的话,代码逻辑类似:
# 定义原始字典(Python里叫字典,和哈希表是同一概念) A = {"2019.01": 100, "2019.02": 100, "2019.03": 100, "2019.04": 100} B = {"2019.01": 20, "2019.02": 30, "2019.03": 50, "2019.04": 40} # 生成目标字典C C = {} for key, a_val in A.items(): # 检查键是否存在于B中 if key in B: # 计算百分比,这里用int取整,要保留小数的话可以用round(xxx, 2) percentage = (B[key] / a_val) * 100 C[key] = f"{int(percentage)}%" # 打印结果 print(C) # => {'2019.01': '20%', '2019.02': '30%', '2019.03': '50%', '2019.04': '40%'}
小提示
- 我加了键存在性检查,要是你能保证A和B的键完全一一对应,这个检查可以去掉,代码会更简洁
- 如果需要保留小数百分比(比如
25.5%),把to_i或者int()改成round(percentage, 2),然后调整字符串格式就行
内容的提问来源于stack exchange,提问作者Noah_J.C_Lee
相关产品推荐
相关产品推荐

