Python 在字典和字典列表之间进行日志操作

Python 在字典和字典列表之间进行日志操作,python,list,dictionary,probability,logarithm,Python,List,Dictionary,Probability,Logarithm,您好,我想了解一下: 假设我有这个 a= {'OCC': 6, 'FFR': 90, 'DTY': 3139, 'UTY': 1861, 'VGY': 2175, 'DGG': 364, 'CCG': 37, 'OPTY': 80, 'SET': 666, 'WEK': 82, 'XAU': 56, 'ROD': 38, 'PLS': 206, 'DAFF': 2, 'C': 2} b= [{'key': 'OCC', 'count': 3615, 'prob': 0},

您好,我想了解一下:

假设我有这个

a= {'OCC': 6, 'FFR': 90, 'DTY': 3139, 'UTY': 1861, 'VGY': 2175, 'DGG': 364, 
    'CCG': 37, 'OPTY': 80, 'SET': 666, 'WEK': 82, 'XAU': 56, 'ROD': 38, 'PLS': 206, 'DAFF': 2, 'C': 2}

b= [{'key': 'OCC', 'count': 3615, 'prob': 0}, 
    {'key': 'FFR', 'count': 408, 'prob': 0}, 
    {'key': 'DTY', 'count': 915, 'prob': 0}, 
    {'key': 'UTY', 'count': 652, 'prob': 0}, 
    {'key': 'VGY', 'count': 365, 'prob': 0}, 
    {'key': 'UTY', 'count': 589, 'prob': 0}, 
    {'key': 'DGG', 'count': 573, 'prob': 0}, 
    {'key': 'DTY', 'count': 75, 'prob': 0}, 
    {'key': 'UTY', 'count': 148, 'prob': 0}, 
    {'key': 'UTY', 'count': 116, 'prob': 0}, 
    {'key': 'CCG', 'count': 7503, 'prob': 0}]
我想知道我怎么可能得到这样的结果:如果a中的键存在于b中,那么dolog(b的值)-log(a的值)。然后可能将其保存在“prob”键中。 (对于这个例子,让我们考虑字典A的第一个元素:KOC OC出现在B表的第一个字典中。我想知道如何在整个B表中完成它,并在B内的字典中更新每个PRB键)

所以我会得到这样的结果: 日志(3615)-日志(6)=6.401087665364811 因此,列表b的第一个字典中的prob应更新为:

{'key': 'OCC', 'count': 3615, 'prob':6.401087665364811 }


如果
a
b
是您的问题输入:

from pprint import pprint
from math import log

for d in b:
    if d["key"] in a:
        d["prob"] = log(d["count"]) - log(a[d["key"]])
    
pprint(b)
再详细说明一下它是如何工作的,首先它会获取每个字典,对于每个字典,检查
d[“key”]
(应该在A中的键)是否在A中。如果是这样的话,它将生成该dict的计数
d[“count”]
,使用数学日志包计算日志,还将计算
a[d[“key”]
的日志,这是
a[]
的值。然后将两者相减,并将其分配给
d[“prob”]

印刷品:

[{'count':3615,'key':'OCC','prob':6.401087665364811},
{'count':408,'key':'FFR','prob':1.5114575040738965},
{'count':915,'key':'DTY','prob':-1.232735491566432},
{'count':652,'key':'UTY','prob':-1.0488246947155977},
{'count':365,'key':'VGY','prob':-1.7848865899402933},
{'count':589,'key':'UTY','prob':-1.15044307029906643},
{'count':573,'key':'DGG','prob':0.4537318409077935},
{'count':75,'key':'DTY','prob':-3.7341714433056428},
{'count':148,'key':'UTY','prob':-2.531656982878136},
{'count':116,'key':'UTY','prob':-2.7752790655358863},
{'count':7503,'key':'CCG','prob':5.31214303069015045}]

非常感谢您!非常清楚!