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

count specific items in a nested list (x and y dependencies) inside python

示例我有这些列表

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'算到一个整型变量中,这些count的答案应该是2,请问可以得到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

基本上,该函数将检查值是否是列表的每个子列表的子集,为此我们使用 issubset, then count using sum

另一种方法是:

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

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

您可以使用 for 循环:

代码解释:

  1. count = 0 设置 count 为 0

  2. for sub_l in l: 遍历 l

  3. if set(elems).issubset(sub_l): count += 1 如果 elems 在子列表 (sub_l)

    中,则向 count 添加 1
  4. return count 返回 count 变量

代码:

def count_elems(elems, l):
    count = 0

    for sub_l in l:     
        if set(elems).issubset(sub_l):
            count += 1

    return count

print(count_elems(['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})

使用python的内置函数count

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"))