У меня есть словарь, подобный этому:
d={(('4', '2'), ('2', '0')): [3], (('4', '2'), ('2', '1')): [3], (('4', '2'), ('2', '3')): [1], (('4', '2'), ('2', '4')): [71]}
Моя цель - получить вероятность какого-то специального ключа, например, мне нужна вероятность ('4', '2'), ('2', '1')
, которая равна 3 / (3 + 3 + 1 + 71) = 3/78, но как мне написать этот метод в python? У меня есть идея, подобная этой:
p={}
for i,j in d.keys():
p[i,j]=d[i,j][0]/sum(d[i][0])
, но она не сработала, потому что d [I] не прав.
update: вопрос был хорошо решен с некоторыми хорошими ответами , Теперь я хочу спросить о том, как выполнять вычисления вдоль пути в дереве, показанном на рисунке , на рисунке описаны переходы между состояниями , и я хочу найти время, необходимое для каждого состояния в красные состояния. .
каждый путь в этом дереве имеет два значения, например [6,109.0], 109.0 - это время от ('4', '1') до ('1', '0'), и на этом путь от ('4') -> ('4', '1') -> ('1', '0') равен 10,0 + 109,0 = 119,0, поэтому вопрос заключается в том, как получить время из текущего состояния в красное состояние?
переходы между ними можно записать так: states_agg = {((), ('2',)): [1, 0.0], (('0', '1' ), ('1', '4')): [1, 10.0], (('0', '2'), ('2', '0')): [2, 10.0], ((' 0 ',' 2 '), (' 2 ',' 4 ')): [1, 159.0], ((' 0 ',' 4 '), (' 4 ',' 0 ')): [26, 13.26923076923077], ((«0», «4»), («4», «2»)): [2, 10,5], ((«1», «2»), («2», «4» )): [4, 71,5], ((«1», «4»), («4», «1»)): [3, 10,333333333333334], ((«2»,), («2», «0»)): [1, 10,0], ((«2», «0»), («0», «2»)): [1, 42,0], ((«2», «0») , ('0', '4')): [6, 109,0] , (('2', '1'), ('1', '2')): [3, 43.0], (('2', '3'), ('3', '2')) : [1, 860.0], (('2', '4'), ('4', '2')): [76, -223.8815789473684], (('3', '2'), ('2 ',' 0 ')): [1, 11.0], ((' 4 ',' 0 '), (' 0 ',' 1 ')): [1, 507.0], ((' 4 ',' 0 '), (' 0 ',' 2 ')): [2, 69,5], ((' 4 ',' 0 '), (' 0 ',' 4 ')): [23, 200.17391304347825], (( «4», «1»), («1», «2»)): [1, 95,0], ((«4», «1»), («1», «4»)): [2 , 1447.0], (('4', '2'), ('2', '0')): [3, 28.666666666666668] (('4', '2'), ('2', '1' )) [3,132.66666666666666], ((«4», «2»), («2», «3»)): [1, 64,0], ((«4», «2»), («2», '4')): [71,79.09859154929578]}
например, от ('4', '2') до ('2', '4') время перехода равно 79.09859154929578