Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过for循环浏览字典并计算事件数_Python_Sorting_Dictionary - Fatal编程技术网

Python 通过for循环浏览字典并计算事件数

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

我想计算每个字母的真与假的数量,然后输出每个数据的真/假比率。 d的示例:真数=2,假数=1。它应该打印2/1=1的比率 为此,, 到目前为止,我已经做到了:


但它一直输出零。为什么?

您正在将
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)