tuple read python tuples min

read - tuple python 3



Pares de tuplas, encontrar el mínimo usando Python (3)

Quiero encontrar el mínimo de una lista de tuplas clasificadas por una columna determinada. Tengo algunos datos organizados como una lista de 2-tuplas, por ejemplo.

data = [ (1, 7.57), (2, 2.1), (3, 1.2), (4, 2.1), (5, 0.01), (6, 0.5), (7, 0.2), (8, 0.6)]

¿Cómo puedo encontrar el mínimo del conjunto de datos mediante la comparación del segundo número en las tuplas solamente?

es decir

data[0][1] = 7.57 data[1][1] = 2.1

min (datos) = (5, 0.01)

devuelve min( data ) (1, 7.57) , que acepto es correcto para el mínimo de índice 0, pero quiero un mínimo de índice 1.


Si está dispuesto a beber el coolaid nulípara, puede usar estos comandos para obtener la tupla en la lista donde el artículo es mínimo:

Los ingredientes que hacen que esto funcione son las funciones avanzadas de corte y argsort de Numpy.

import numpy as np #create a python list of tuples and convert it to a numpy ndarray of floats data = np.array([ (1, 7.57), (2, 2.1), (3, 1.2), (4, 2.1), (5, 0.01), (6, 0.5), (7, 0.2), (8, 0.6)]) print("data is") print(data) #Generate sortIndices from second column sortIndices = np.argsort(data[:,1]) print("sortIndices using index 1 is:" ) print(sortIndices) print("The column at index 1 is:") print(data[:,1]) print("Index 1 put into order using column 1") print(data[sortIndices,1]) print("The tuples put into order using column 1") print(data[sortIndices,:]) print("The tuple with minimum value at index 1") print(data[sortIndices[0],:]) print("The tuple with maximum value at index 1") print(data[sortIndices[-1],:])

Que impresiones:

data is [[ 1. 7.57] [ 2. 2.1 ] [ 3. 1.2 ] [ 4. 2.1 ] [ 5. 0.01] [ 6. 0.5 ] [ 7. 0.2 ] [ 8. 0.6 ]] sortIndices using index 1 is: [4 6 5 7 2 1 3 0] The column at index 1 is: [ 7.57 2.1 1.2 2.1 0.01 0.5 0.2 0.6 ] Index 1 put into order using column 1 [ 0.01 0.2 0.5 0.6 1.2 2.1 2.1 7.57] The tuples put into order using column 1 [[ 5. 0.01] [ 7. 0.2 ] [ 6. 0.5 ] [ 8. 0.6 ] [ 3. 1.2 ] [ 2. 2.1 ] [ 4. 2.1 ] [ 1. 7.57]] The tuple with minimum value at index 1 [ 5. 0.01] The tuple with maximum value at index 1 [ 1. 7.57]


Aunque la respuesta de Lev es correcta, también quería agregar el Método de clasificación, en caso de que alguien estuviera interesado en las primeras n mínimas. Una cosa a considerar es que el tiempo de ejecución de la operación min es O(N) donde el tipo es O(N Log N)

data = [ (1, 7.57), (2, 2.1), (3, 1.2), (4, 2.1), (5, 0.01), (6, 0.5), (7, 0.2), (8, 0.6)] data.sort(key=lambda x:x[1]) print data >>> [(5, 0.01), (7, 0.2), (6, 0.5), (8, 0.6), (3, 1.2), (2, 2.1), (4, 2.1), (1, 7.57)]

https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt


In [2]: min(data, key = lambda t: t[1]) Out[2]: (5, 0.01)

o:

In [3]: import operator In [4]: min(data, key=operator.itemgetter(1)) Out[4]: (5, 0.01)