Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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/1/list/4.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内部嵌套列表(x和y依赖项)中的特定项_Python_List_Nested_Dependencies_Naivebayes - Fatal编程技术网

计算python内部嵌套列表(x和y依赖项)中的特定项

计算python内部嵌套列表(x和y依赖项)中的特定项,python,list,nested,dependencies,naivebayes,Python,List,Nested,Dependencies,Naivebayes,例如,我有这些清单 bersarang=[['Cerah','Tinggi','Lemah','Iya'],['Cerah','Tinggi','Kuat','Iya'],['Mendung','Tinggi','Lemah','Tidak'],['Hujan','Tinggi','Lemah','Iya'],['Hujan','Normal','Lemah','Iya'],['Hujan','Normal','Kuat','Tidak'],['Mendung','Normal','Kuat',

例如,我有这些清单

bersarang=[['Cerah','Tinggi','Lemah','Iya'],['Cerah','Tinggi','Kuat','Iya'],['Mendung','Tinggi','Lemah','Tidak'],['Hujan','Tinggi','Lemah','Iya'],['Hujan','Normal','Lemah','Iya'],['Hujan','Normal','Kuat','Tidak'],['Mendung','Normal','Kuat','Iya']]
然后我想把‘Cerah’和‘Iya’计算成一个整数变量,这些计数的结果应该是2。有可能数到吗? 我试过使用count,但它只是count 1项

我的失败解决方案:

bersarang.count('Cerah' and 'Iya')

如果要计算两个值同时出现的子列表,可以执行以下操作:

bersarang = [['Cerah', 'Tinggi', 'Lemah', 'Iya'], ['Cerah', 'Tinggi', 'Kuat', 'Iya'],
             ['Mendung', 'Tinggi', 'Lemah', 'Tidak'], ['Hujan', 'Tinggi', 'Lemah', 'Iya'],
             ['Hujan', 'Normal', 'Lemah', 'Iya'], ['Hujan', 'Normal', 'Kuat', 'Tidak'],
             ['Mendung', 'Normal', 'Kuat', 'Iya']]


def count_values(values, lst):
    s = set(values)
    return sum(s.issubset(l) for l in lst)


res = count_values(('Cerah', 'Iya'), bersarang)
print(res)
输出

2
基本上,函数将检查值是否是列表中每个子列表的子集,为此我们使用,然后使用计数

另一种方法是执行以下操作,尽管对于大量值来说速度较慢:

def count_values(values, lst):
    return sum(all(v in l for v in values) for l in lst)

基本上检查每个子列表中是否包含值。

您可以使用
for
循环:

代码移植:

  • count=0
    设置
    count
    为0

  • 对于l中的子对象:
    l中迭代

  • if set(elems).issubset(sub_l):count+=1
    如果
    elems
    在子列表中(
    sub_l
    ),则向
    count
    添加1

  • 返回计数
    返回
    计数
    变量

  • 代码:

    def count_elems(elems,l):
    计数=0
    对于l中的sub_l:
    如果设置(元素)。发布设置(子元素):
    计数+=1
    返回计数
    打印(计数元素(['Iya','Cerah'],['Cerah','Tinggi','Lemah','Iya'],['Cerah','Tinggi','Kuat','Iya'],['Mendung','Tinggi','Lemah','Tidak'],['Hujan','Tinggi','Lemah','Iya'],
    ['Hujan','Normal','Lemah','Iya','Hujan','Normal','Kuat','Tidak'],
    ['Mendung','Normal','Kuat','Iya']])
    
    尝试使用收款计数器

    >>> from collections import Counter
    >>> z = ['blue', 'red', 'blue', 'yellow', 'blue', 'red']
    >>> Counter(z)
    Counter({'blue': 3, 'red': 2, 'yellow': 1})
    

    使用内置功能的蟒蛇计数

    bersarang=[['Cerah','Tinggi','Lemah','Iya'],['Cerah','Tinggi','Kuat','Iya'],['Mendung','Tinggi','Lemah','Tidak'],['Hujan','Tinggi','Lemah','Iya'],['Hujan','Normal','Lemah','Iya'],['Hujan','Normal','Kuat','Tidak'],['Mendung','Normal','Kuat','Iya']]
    
    def countit(thing):
        count = 0
        for i in bersarang:
            count += i.count(thing)
        return count
    print(countit("Cerah"),countit("Iya"))