Python 通过for循环浏览字典并计算事件数
我想计算每个字母的真与假的数量,然后输出每个数据的真/假比率。 d的示例:真数=2,假数=1。它应该打印2/1=1的比率 为此,, 到目前为止,我已经做到了:Python 通过for循环浏览字典并计算事件数,python,sorting,dictionary,Python,Sorting,Dictionary,我想计算每个字母的真与假的数量,然后输出每个数据的真/假比率。 d的示例:真数=2,假数=1。它应该打印2/1=1的比率 为此,, 到目前为止,我已经做到了: 但它一直输出零。为什么?您正在将True(布尔值)与“True”(字符串)进行比较。删除if子句中True周围的引号应该可以完成这项工作。您的值是bool类型True/False,您将它们与str类型'True'进行比较,因此所有值都将被评估为False,应该是 d={a': [True]} {'b': [True]} {'c': [T
但它一直输出零。为什么?您正在将
True
(布尔值)与“True”
(字符串)进行比较。删除if子句中True
周围的引号应该可以完成这项工作。您的值是bool
类型True/False
,您将它们与str
类型'True'
进行比较,因此所有值都将被评估为False
,应该是
d={a': [True]}
{'b': [True]}
{'c': [True]}
{'d': [True, False, True]}
一个
collections.Counter
也可能非常有用
if l:
count_s +=1
else:
count_f +=1
字符串“True”
与布尔值True
不同
由于True
计为1,而False
计为0,因此只需使用sum
:
d = {'a': [True], 'b': [True], 'c': [True], 'd': [True, False, True], 'e': [False]}
for edge, values in d.items():
c = Counter(values)
ratio = c.get(True, 0) / c.get(False, 1)
print(edge, ratio)
a 1.0
b 1.0
c 1.0
d 2.0
e 0.0
粘贴您的代码,而不是它的图像请
2/1=1
确定吗?不,除了图像问题之外,您共享的代码中还存在引用问题。我们无法猜测哪些错误是相关的,哪些是打字错误。请确保在您的问题中分享准确信息。
d = {
'a': [True],
'b': [True],
'c': [True],
'd': [True, False, True],
}
for edge, values in d.items():
count_true = sum(values)
count_false = len(values) - count_true
success = count_true / count_false if count_false > 0 else 0
print(edge, success)