Python compara varias listas en una tabla de comparación

CorePress2024-01-24  9

No estoy buscando una solución exacta, sino una palabra clave para investigar. No estoy seguro de por qué, pero realmente no pude encontrar ningún ejemplo para este problema tan simple.

Supongamos que tengo 3 listas (podrían ser más) que se ven así:

l1=[x,y,z]
l2=[a,y,z,b]
l3=[a,b,c,d,e]

y lo que estoy tratando de hacer es tener una tabla de comparación como esta:

    l1  l2  l3
a   0   1   1
b   0   1   1
c   0   0   1
d   0   0   1
e   0   0   1
x   1   0   0
y   1   1   0
z   1   1   0

las listas pueden tener diferentes longitudes y nunca tienen repeticiones como:

l = [x,x,y]

Nuevamente, no estoy pidiendo a nadie que se encargue de la tarea por mí, solo estoy buscando algunas palabras clave, consejos y pseudocódigos para comenzar.

¿Entonces estás intentando crear una tabla de comparación con un conjunto de todas las entradas posibles y si cada lista las contiene o no? Supongo que mi pregunta de aclaración sería: ¿cómo piensa utilizar esta información? Porque hay muchas maneras de hacer algo como esto, pero la forma de abordarlo puede depender de su objetivo final.

- usuario3832673

26/03/2021 a las 23:45

Gracias por la pregunta. Sí, estoy intentando crear una tabla de la que tampoco conozco las posibles entradas. Lo más probable es que la suma distinta de todas las listas seaDame ese. Mi resultado final es encontrar valores de filas y columnas que contengan la mayoría de los unos. En realidad, las filas son criptomonedas y las columnas son intercambios. Estoy tratando de etiquetar cada intercambio para que cuando haga una tabla de comparación de precios, sepa qué moneda figura en cada intercambio.

- erikci

26/03/2021 a las 23:53



------------------------------------

Puede que no sea la solución más rápida ni más eficiente, pero lo hice de esta manera. Creo un diccionario con claves como valores en todas las listas. Los valores son la lista en la que aparecen. Entonces print los encabezados (nombres de lista) y cada clave y valores línea por línea. Estoy bastante seguro de que hay una mejor manera de hacer esto que mi solución.

l1=["x","y","z"]
l2=["a","y","z","b"]
l3=["a","b","c","d","e"]

values = sorted(set(l1 + l2 + l3))

d = {}
for value in values:
    x = []
    if value in l1:
        x.append("1")
    else:
        x.append("0")
        
    if value in l2:
        x.append("1")
    else:
        x.append("0")
        
    if value in l3:
        x.append("1")
    else:
        x.append("0")
    d[value] = x

print(" "*3 + "l1 l2 l3")

for k in d:
    print(k + " "*2 + "  ".join(d[k]))   



------------------------------------

Después de obtener la aclaración, si desea pivotar sus datos, ¿por qué no prueba con un diccionario, ingresando el ID de la fila y siendo el valor una lista de ID de lista (ya que son de intercambio, debería tener alguna manera de identificarlo)? Como ejemplo:

{ 'a': [l2, l3],
  'b': [l2, l3],
  'c': [l3],
...
}

1

1

Oh, el diccionario también sería más útil. gracias por el consejo

- erikci

27 de marzo de 2021 a las 0:11

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare