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