我有一个默认的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}})
答案 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}