在字典中查找值的概率

时间:2016-04-29 10:54:33

标签: python dictionary

我有一个默认的dict,如下所示:

if($data == "data1" && $value == 1) {
   // notice
} else {
   // process
}

键是音素,字典本身的值是字形,它们出现一定次数,这是默认字典中的相应数字。

该函数应该返回另一个包含概率的默认dict,如下所示:

my_dict = default(dict, {"K": {"k": 2, "x": 1.0}, "S": {"_":1.0, "s":1},    "EH": {"e":1.0}})

' E'保持不变,因为1.0 / 1 = 1.0。 ' K'具有0.66666和0.33333的值,因为2/3 = 0.66666和1/3 = 0.3333333。 ' S'具有0.5和0.5的值,因为它们中的每一个的1/2为0.5。返回词典中的概率必须总是为1。

到目前为止,我有这个:

defaultdict(<class 'dict'>, {'EH': {'e': 1.0}, 'K': {'k': 0.6666666666666666, 'x': 0.3333333333333333}, 'S': {'_': 0.5, 's': 0.5}})

2 个答案:

答案 0 :(得分:1)

对于每个subdicnaries,您希望将每个值除以subdictionnary值的总和:

my_dict = {"K": {"k": 2, "x": 1.0}, "S": {"_":1.0, "s":1}, "EH": {"e":1.0}}

{k:{k1:v1/sum(v.values()) for k1,v1 in v.iteritems()} for k,v in my_dict.iteritems()}

{'EH': {'e': 1.0},
 'K': {'k': 0.6666666666666666, 'x': 0.3333333333333333},
 'S': {'_': 0.5, 's': 0.5}}

答案 1 :(得分:0)

example_dict = {"A": 1, "B": 2, "C": 3}
prob_dict = {}
for k, v in test_dict.items():
    prob_dict[k] = v / sum(example_dict.values())
print(prob_dict)
{'A': 0.16666666666666666, 'B': 0.3333333333333333, 'C': 0.5}