Cómo reemplazar una tupla en una lista ordenada de tuplas basándose en el primer valor de Python

Rikudo

Soy nuevo en Python y estoy buscando ayuda para resolver el siguiente problema

Necesito crear una lista ordenada de tuplas / diccionarios basándome en los datos proporcionados. Luego, cuando se proporcionan nuevos datos y tienen la misma primera clave, quiero reemplazar su valor por uno nuevo. Para ser más claro, daré un ejemplo ... Imagine que tengo datos, que se ven como sigue:

data = [(1, 100), (2, 200), (4, 400), (7, 900)]

Entonces tengo una nueva entrada del usuario, por ejemplo:

(4,500)

Entonces, ahora quiero reemplazar esta tupla con (4,400)esta con (4,500). Sé que las tuplas son inmutables, por lo que no quiero actualizar nada, solo borrar la anterior basándome en la clave (aquí: 4) y reemplazarla con una nueva tupla.

Hasta ahora utilicé una clase de otra pila que inserta cada nueva entrada (tupla) de forma ordenada en una lista de tuplas, y quiero que permanezca así, porque además necesito calcular el número más cercano más bajo y más alto al proporcionado uno en caso de que no esté en una lista.

Mi código se ve como sigue:

from bisect import bisect_left


class KeyWrapper:
    def __init__(self, iterable, key):
        self.it = iterable
        self.key = key

    def __getitem__(self, i):
        return self.key(self.it[i])

    def __len__(self):
        return len(self.it)

data = [(1, 100), (2, 200), (4, 400), (7, 900)]
data.sort(key=lambda c: c[0])

newcol = (3, 500)

bslindex = bisect_left(KeyWrapper(data, key=lambda c: c[0]), newcol[0])
data.insert(bslindex, newcol)

La salida tiene el siguiente aspecto:

[(1,100),(2,200),(3,500),(4,400),(7,900)]

Y proporcionando una nueva variable por ej. newcols2 = (3,600), basándome en el primer elemento de una tupla (aquí 3), quiero que se muestre como:

[(1,100),(2,200),(3,600),(4,400),(7,900)]

Chris Farr

¿Qué tal esto?

data = [(1, 100), (2, 200), (4, 400), (7, 900)]
new = (4, 500)

# Filter out matching
data = [i for i in data if i[0] != new[0]]
# Add the new
data.append(new)
# Re-sort
data = sorted(data, key=lambda x: x[0])

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

Python: cómo reemplazar el primer elemento de cada lista en una lista de listas

¿Cómo encontrar una tupla subcadenando en una lista de tuplas en Python?

¿Cómo convertir el primer valor de una tabla ordenada en una medida?

Insertar una tupla en una lista ordenada, de acuerdo con un valor en la tupla

¿Cómo puedo eliminar tuplas duplicadas de una lista basada en el valor de índice de tupla mientras mantengo el orden de las tuplas?

Verificando si un Entero dado es el primer elemento de una tupla en una lista de tuplas

Verificando si un Entero dado es el primer elemento de una tupla en una lista de tuplas

¿Cómo puedo iterar el primer elemento de cada tupla en una lista de tuplas a través de un método de clase?

¿Cómo obtengo el primer valor de una lista de claves de forma concreta en Python?

Python: cambia la tupla en una lista de tuplas

¿Cómo obtener el primer elemento en una lista de tuplas?

reemplazar el primer valor en una cadena de datos pandas

Obtener el segundo elemento de una tupla (en una lista de tuplas) como una cadena

Obtenga el primer elemento de cada tupla en una lista en Python

fusionar una clave que sea de tipo tupla con un valor que sea una lista de tuplas en una lista de tuplas, python

¿Cómo dividir una lista de tuplas según el valor mínimo de cada tupla?

¿Cómo dividir una lista de tuplas según el valor mínimo de cada tupla?

Acceda al tercer elemento de una tupla en el primer elemento de una lista de tuplas en la plantilla de django

¿Cómo convertir una tupla de tuplas en una lista de listas?

¿Cómo guardo el diccionario de Python en un marco de datos si el valor del diccionario es una tupla de tuplas?

¿Cómo reemplazar valor en secuencias de una lista booleana?

¿Cómo obtener el índice de una lista ordenada de diccionario en Python?

Obtenga el valor máximo en una lista de tuplas

Cómo imprimir un registro SAS basándose en el valor máximo de una variable

Cómo eliminar un elemento de la lista de tuplas que coinciden solo con el primer valor de la tupla en Haskell

Obtener el primer elemento de una tupla para cada fila en una lista en pyspark

Obtener una tupla de una lista de tuplas si el elemento aparece en una lista de cadenas

python obtiene el segundo valor de una tupla en una lista

Obtener el índice de una lista con tuplas en la que el primer elemento de la tupla coincide con el patrón

TOP Lista

CalienteEtiquetas

Archivo