Cómo almacenar todos los valores de una lista de listas y la frecuencia de su aparición, así como su índice?
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)
Necesito el número de apariciones de cada valor, así como sus índices.
La lista de listas es occ (50 listas adentro con varias longitudes cada una).
El pensamiento era iterar sobre todo, almacenar cada valor en la lista idnt[i] y el
índice de la lista en la que aparece en la lista idntfrq[i], y luego eliminar el
elemento de la lista de la iteración actual. Después de eso, la lista occ debería estar vacía,
pero no lo está, subí una captura de pantalla de occ[0][0] para mostrar a qué me refiero: imagen
NOTA: Cada lista dentro de una lista contiene cada elemento solo una vez, pero quiero contar las
apariciones en todas las listas dentro de cada occ[i] (para i en 50) y también mantener el índice.
davy.ai
El código contiene bucles anidados múltiples que iteran sobre la lista
occ
. Crea dos listas vacíasidnt
eidntfrq
. Luego, itera sobre cada elemento deocc
y, para cada elemento, agrega una lista vacía aidnt
eidntfrq
. Luego, itera sobre cada par de índices enocc[i]
y, para cada par, verifica si el mismo elemento existe en ambos índices. Si existe, agrega el índice de la segunda ocurrencia aidntfrq[i]
. Finalmente, elimina el elemento común de ambos índices enocc[i]
.Para obtener el número de apariciones de cada valor, así como sus índices, puedes usar un objeto
Counter
del módulocollections
. Así es cómo puedes modificar el código para lograr eso:Este código primero combina todos los elementos en
occ
en una lista única llamadaall_occ
. Luego, usaCounter
para obtener el conteo de cada elemento, que se almacena en la variablecounts
.La siguiente parte del código es la misma que antes. Iteramos sobre cada elemento de
occ
y, para cada elemento, agregamos una lista vacía aidnt
eidntfrq
. Luego, iteramos sobre cada índice enocc[i]
y, para cada índice, iteramos sobre cada elemento en el índice. Para cada elemento, lo agregamos aidnt[i]
y también agregamos el índice del índice actual y el conteo del elemento enall_occ
aidntfrq[i]
.Este código modificado debería darte el número de apariciones de cada valor, así como sus índices.