Prepare 4 listas de listas existentes basadas en el valor de uno de los elementos de la lista

usuario5154816

Necesito preparar 2 listas basadas en los elementos de una lista.

>>> a = ['ether1000', 'ether1000', 'ether1000', 'ether1000', 'ether100Gig', 'ether100Gig']
>>> b = ['1/11/5', '1/11/6', '1/11/7', '1/11/8', '1/6/1', '1/6/2']

Necesito mapear elementos de la lista aa elementos de la lista by hacer una nueva lista de la lista bpara la que tiene la lista b ether1000.

Entonces estas deberían ser las listas resultantes:

res1 = ['ether1000', 'ether1000', 'ether1000', 'ether1000']
res2 = ['1/11/5', '1/11/6', '1/11/7', '1/11/8']
res3 = ['ether100Gig', 'ether100Gig']
res4 = ['1/6/1', '1/6/2']

Intenté hacer zip de 2 listas:

>>> zip(a, b)
[('ether1000', '1/11/5'), ('ether1000', '1/11/6'), ('ether1000', '1/11/7'), ('ether1000', '1/11/8'), ('ether100Gig', '1/6/1'), ('ether100Gig', '1/6/2')]

>>> c = zip(a,b)
>>> for i in c:
...  if 'ether1000' in i:
...   d.append[i(1)]
...
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: 'tuple' object is not callable

Pero a partir de esto, no estoy seguro de cómo puedo extraer elementos con ether1000valor y hacer 2 listas como arriba. Sería bueno si alguien me pudiera dar una pista sobre cómo resolver esto.

Edición basada en respuestas:

Tengo estas 2 listas, ¿hay alguna forma de que pueda hacer otras dos listas res3 y res4?

>>> [el[0] for el in c if 'ether1000' in el]
['ether1000', 'ether1000', 'ether1000', 'ether1000']

>>> [i[1] for i in zip(a,b) if 'ether1000' in i]
['1/11/5', '1/11/6', '1/11/7', '1/11/8']
Fotos de Moinuddin

El problema es con la línea d.append[i(1)], en su lugar deberías usar:

#       v  `(..)` for function call 
d.append(i[1])
#         ^ for fetching the index
# Since you want to access the index, you need to use `i[1]`

Aquí está el ejemplo para su entrada:

>>> a = ['ether1000', 'ether1000', 'ether1000', 'ether1000', 'ether100Gig', 'ether100Gig']
>>> b = ['1/11/5', '1/11/6', '1/11/7', '1/11/8', '1/6/1', '1/6/2']

>>> res1, res2, res3, res4 = [], [], [], []
>>> for i, j in zip(a, b):
...     if i == 'ether1000':
...         res1.append(i)
...         res2.append(j)
...     else:
...         res3.append(i)
...         res4.append(j)
...
>>> res1
['ether1000', 'ether1000', 'ether1000', 'ether1000']
>>> res2
['1/11/5', '1/11/6', '1/11/7', '1/11/8']
>>> res3
['ether100Gig', 'ether100Gig']
>>> res4
['1/6/1', '1/6/2']

Sin embargo, puede simplificar su respuesta usando la comprensión de listas con zipcomo:

>>> res1, res2 = zip(* [i for i in zip(a,b) if 'ether1000' in i[0]])
>>> res1
('ether1000', 'ether1000', 'ether1000', 'ether1000')
>>> res2
('1/11/5', '1/11/6', '1/11/7', '1/11/8')
# These are the `tuple` values instead of `list` but I don't think it matters for you

>>> res3, res4 = zip(* [i for i in zip(a,b) if 'ether1000' not in i[0]])
>>> res3
('ether100Gig', 'ether100Gig')
>>> res4
('1/6/1', '1/6/2')

Pero en el enfoque de comprensión de listas, iterará su lista inicial dos veces. Sugeriré usar el primer enfoque.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Recuperar listas de una lista de listas basadas en los primeros elementos dados

Dividir la lista en varias listas según el valor de los elementos

Unir la lista de listas por uno de los elementos de la lista

Eliminar elementos de dos listas basadas en otra lista

Dardo: verifique los elementos en la lista de listas

Agregar elementos de listas a la lista de listas en Python

contar elementos en la lista de listas

Elementos comunes en la lista de listas

Elementos comunes en la lista de listas

La forma más sencilla de contar la longitud de los elementos en una lista de listas y mostrar el resultado como una lista de listas

Eliminar un elemento de una lista de listas según cada uno de los primeros elementos de la lista

hacer una lista de listas basadas en el nombre de la variable

Recuperar todos los elementos menos uno en una lista de listas (Python)

Integrando elementos de la lista en la lista de listas

¿La forma más rápida de filtrar listas de listas basadas en una tercera lista?

Multiplica los elementos de la lista de listas entre sí.

Repite una matriz asociativa multidimensional en listas basadas en el valor de la clave

¿Eliminar el primer elemento de la lista de listas, condensar la lista de listas? ¿Demasiados elementos?

¿Sumando los últimos elementos de la lista de listas en base a otros elementos?

¿Sumando los últimos elementos de la lista de listas en base a otros elementos?

Divida una lista de diccionarios en varias listas en función de la singularidad de uno de los pares clave/valor en Python

hacer una lista diferente basada en el número de elementos en la lista de listas

python3 unirse a las listas que tienen el mismo valor en la lista de listas

Conservar los nombres de los elementos anidados mientras se combinan elementos de la lista de listas con el mismo nombre

Reordenar elementos de listas en una lista de listas

Reordenar elementos de listas en una lista de listas

CTE recursivo de SQLite para calcular el número de elementos en la lista (de listas)

Java 8: cómo sumar todos los elementos de la lista en un mapa de listas

Tome los elementos de la lista uno por uno sin perder el valor anterior