python-3.x - 查找列表中各个组的出现次数
问题描述
“所以,我得到了一份清单——
group = [2,1,3,4]
此列表的每个索引代表一个组。所以group 0 = 2
group 1 = 1
group 2 = 3
group 3 = 4
我得到了另一个名为:
l =[[[0, 0, 3, 3, 3, 3], [0, 0, 1, 3, 3, 3, 3]], [[0, 1]], [[2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3]], [[0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3]]]
我想要的输出是:
dict = {0:[0,3],1;[1],2:[2,3],3:[0,2]}
如果元素在 l 的每个子列表中出现的次数,即如果 l[0][0] 和 l[0][1] 都有 0 出现 2 次,则将其添加到 dict 的索引 0 中。由于l[0][0]
and l[0][1]
have 3 都出现了 4 次(这是因为 group[3] 是 4),它被添加到索引 0。现在l[1][0]
和 0 只出现一次(而不是两次),所以它没有添加到索引 1。但是 1只出现一次,所以它被添加到索引 1。谢谢!
到目前为止我已经尝试过:
def tryin(l,groups):
for i in range(len(l)):
count = 0
for j in range(len(l[i])):
if j in (l[i][j]):
count+=1
if count == groups[i]:
print(i,j)
解决方案
试试这个代码:
输入:
group = [2,1,3,4]
l =[[[0, 0, 3, 3, 3, 3], [0, 0, 1, 3, 3, 3, 3]], [[0, 1]], [[2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3]], [[0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3]]]
def IntersecOfSets(list_):
result = set(list_[0])
for s in list_[1:]:
result.intersection_update(s)
return result
def nb_occ(l,group):
d = {}
for i in l:
l2=[]
for j in i:
l1 = []
for x in group:
if j.count(group.index(x)) >= x :
y=group.index(x)
l1.append(y)
l2.append(l1)
if len(l2)>1:
d[str(l.index(i))]= IntersecOfSets(l2)
else:
d[str(l.index(i))]= l2[0]
return d
print(nb_occ(l,group))
输出:
{'2': {2, 3}, '1': [1], '0': {0, 3}, '3': {0, 2}}
推荐阅读
- mysql - MySQLdb.constants.CR' 没有属性 'SECURE_AUTH
- laravel - 如何安装 Laravel Passport 且没有错误,如下所示
- python - 向后逐步选择以 AUC 为标准选择预测变量的最佳子集
- python - Jupyter Notebook 中的主题
- huffman-code - 在霍夫曼代码(具有不同长度的最佳代码)中,预期的零数是预期长度的一半
- javascript - “不等于值或类型”,无法正常工作:Javascript
- java - 令牌“:”上的语法错误,eclipse ide中的无效AssignmentOperator
- java - 尝试打开文本文件时,Java 中的 Android 应用程序崩溃
- python - Pytest-Django 客户端用户登录
- python-3.x - 为列表中的每个对象添加值