【问题标题】:Divide the second value of each key with the first value of each key inside a dictionary将每个键的第二个值除以字典中每个键的第一个值
【发布时间】:2021-05-10 12:38:04
【问题描述】:

我希望这本字典获得每个键的比率ln(value2/value1)(即ln(94.77730877)/ln(47.82938075))。

{'HKUST1_MOF': [94.77730877, 47.82938075], 'HKUST1_MOF_MCM41': [119.2920858, 55.70192895]}

我尝试了类似下面的代码来查看它是否有效,但我无法修改它以便我可以实际计算所需的值(每个键的比率 ln(value2/value1))。

这些是预期的结果。 {'HKUST1_MOF': [-0.683890743], 'HKUST1_MOF_MCM41': [-0.76156021]}

这是我使用的代码。 对于 d1 中的键:

d1[key] = [val/mean(d1[key]) for val in d1[key]]

【问题讨论】:

  • 你的问题不一致......这些是一回事:“ln(value2/value1)(即,ln(94.77730877)/ln(47.82938075))”

标签: python dictionary iteration


【解决方案1】:

如果字典值中的每个值都是一个列表对象,则可以使用字典理解:

x = {'HKUST1_MOF': [94.77730877, 47.82938075], 'HKUST1_MOF_MCM41': [119.2920858, 55.70192895]}
x = {k : v[0]/v[1] for k, v in x.items()}
print(x)

结合log,可以得到你需要的输出:

from math import log
x = {'HKUST1_MOF': [94.77730877, 47.82938075], 'HKUST1_MOF_MCM41': [119.2920858, 55.70192895]}
x = {k : [(log(v[1]/v[0]))] for k, v in x.items()}
print(x)

输出:

{'HKUST1_MOF': [-0.6838899109306623], 'HKUST1_MOF_MCM41': [-0.7615602108684435]}

【讨论】:

  • 非常感谢您的宝贵意见!解决了!!!
  • 真棒@AmvrosiosGeorgiadis,请考虑接受将问题标记为已解决的答案。
【解决方案2】:

由于dict 中每个key 的值都是list(例如:[94.77730877, 47.82938075]),因此您需要index 它来获取值,然后您可以获取比率

from math import log

d1 = {'HKUST1_MOF': [94.77730877, 47.82938075], 'HKUST1_MOF_MCM41': [119.2920858, 55.70192895]}

for key in d1:
    d1[key] = log(d1[key][1]/d1[key][0]) # i.e. log(second_element / first_element)
{'HKUST1_MOF': -0.6838899109306623, 'HKUST1_MOF_MCM41': -0.7615602108684435}

【讨论】:

    【解决方案3】:
    foo = {'HKUST1_MOF': [94.77730877, 47.82938075], 'HKUST1_MOF_MCM41': [119.2920858, 55.70192895]}
    foo = {bar : i[0]/i[1] for bar, i in foo.items()}
    

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 2020-06-10
      • 1970-01-01
      • 2022-11-26
      • 2021-10-16
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多