You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:12:41