如何存储列表列表的所有值及其出现频率以及索引?

how to store all the values of a list of lists and the frequence of their appearance as well as their index?

我的代码是这样的

idnt=[] 
idntfrq=[]           

for i in range(len(occ)):
    idnt.append([])
    idntfrq.append([])
    for j in range(len(occ[i])):
        for j2 in range(j,len(occ[i])):
            for d in occ[i][j]:
                idnt[i].append(d)
                idntfrq[i].append([j])
                occ[i][j].remove(d)
                for d2 in occ[i][j2]:
                    if d==d2:
                
                        idntfrq[i][-1].append(j2)
                        occ[i][j2].remove(d)
        

我需要每个值出现的次数以及它们的索引

list of lists 是 occ(里面有 50 个不同长度的列表)

当时的想法是遍历所有内容,将每个值存储在 idnt[i] 列表中,然后 它出现在 idntfrq[i] 列表中的列表的索引,然后删除 当前迭代列表中的元素,之后occ列表应该为空 那但不是,我上传了 occ[0][0] 的 prntscr 看看我的意思

注意:列表中的每个列表只包含每个元素一次,但我想计算 在每个 occ[i] 中的所有列表中出现(对于 50 中的 i)并且还保留索引enter image description here

此代码将完成您的要求:

mainList = [[1,2,3],[3,4,5],[1,5,9]]
d = {}
for l in mainList:
    for item in l:
        if item in d.keys():
            d[item] +=1
        else:
            d[item] = 1
print(d)

输出:

{1: 2, 2: 1, 3: 2, 4: 1, 5: 2, 9: 1}

它在字典中给出答案,其中键是项目,值是出现的次数。

此输出并根据需要进一步格式化。

如果每次出现数字时都需要索引,您可以简单地添加一个字典 di,将项目作为键和项目出现的索引对列表作为值。

这可以通过在循环中添加 di[item].append([idx,jdx])di[item] = [[idx,jdx]] 并在循环之前将其定义为 di = {} 来完成,如下所示:

mainList = [[1,2,3],[3,4,5],[1,5,9]]
d = {}
di = {}
idx = -1
for l in mainList:
    idx += 1
    jdx = -1
    for item in l:
        jdx += 1
        if item in d.keys():
            d[item] +=1
            di[item].append([idx,jdx])
        else:
            d[item] = 1
            di[item] = [[idx,jdx]]
print(d)
print(di)

输出:

{1: 2, 2: 1, 3: 2, 4: 1, 5: 2, 9: 1}
{1: [[0, 0], [2, 0]], 2: [[0, 1]], 3: [[0, 2], [1, 0]], 4: [[1, 1]], 5: [[1, 2], [2, 1]], 9: [[2, 2]]}

我认为这可行:

from collections import Counter
list_of_lists = [[1, 2, 3], [4, 1, 2], [3, 4, 5]]
counter = Counter()
for _list in list_of_lists:
    counter.update(_list)