使用字典理解归一化概率
Normalize Probability using Dictionary Comprehension
我的python字典看起来像
probabilities = {'harry': {'gene': {0: 0.23, 1: 0.09, 2: 0.13}, 'trait': {False: 0.23, True: 0.32}},
'jim': {'gene': {0: 0.12, 1: 0.15, 2: 0.56}, 'trait': {False: 0.67, True: 0.12}}}
我通过编写像
这样的代码来规范化它
for person in probabilities:
for attribute in probabilities[person]:
denominator = sum(probabilities[person][attribute].values())
for value in probabilities[person][attribute]:
probabilities[person][attribute][value] /= denominator
代码很好,因为它完美地标准化了概率。但是我可以使用字典理解来做同样的事情吗?如果是这样,如何?如果不是,为什么?
一点努力让我得到:
probabilities = {'harry': {'gene': {0: 0.23, 1: 0.09, 2: 0.13}, 'trait': {False: 0.23, True: 0.32}},
'jim': {'gene': {0: 0.12, 1: 0.15, 2: 0.56}, 'trait': {False: 0.67, True: 0.12}}}
probabilities_new = {
p: {
k: {
k_inn: v_inn / sum(v.values())
for k_inn, v_inn in v.items()
}
for k, v in a.items()
}
for p, a in probabilities.items()
}
我的python字典看起来像
probabilities = {'harry': {'gene': {0: 0.23, 1: 0.09, 2: 0.13}, 'trait': {False: 0.23, True: 0.32}},
'jim': {'gene': {0: 0.12, 1: 0.15, 2: 0.56}, 'trait': {False: 0.67, True: 0.12}}}
我通过编写像
这样的代码来规范化它for person in probabilities:
for attribute in probabilities[person]:
denominator = sum(probabilities[person][attribute].values())
for value in probabilities[person][attribute]:
probabilities[person][attribute][value] /= denominator
代码很好,因为它完美地标准化了概率。但是我可以使用字典理解来做同样的事情吗?如果是这样,如何?如果不是,为什么?
一点努力让我得到:
probabilities = {'harry': {'gene': {0: 0.23, 1: 0.09, 2: 0.13}, 'trait': {False: 0.23, True: 0.32}},
'jim': {'gene': {0: 0.12, 1: 0.15, 2: 0.56}, 'trait': {False: 0.67, True: 0.12}}}
probabilities_new = {
p: {
k: {
k_inn: v_inn / sum(v.values())
for k_inn, v_inn in v.items()
}
for k, v in a.items()
}
for p, a in probabilities.items()
}