¿Cómo eliminar duplicados de una lista de Python y obtener el valor máximo?
list=[('Xiao Wang',?' Primer examen',?'' 5'),? ('Xiao Chen',?' Segundo examen',?'' 7'),? ('Xiao Chen',?' Primer examen',?'' 1'), ('Xiao Wang',?' ¿Sexto examen',?'' 20')]
dic?=?{ }
list1=[]
para?persona?en?lista:
si?persona[0]?no?en?dic.keys() :
dic[persona[0]]? =?persona
elif?int(dic[persona[0]][2])?lt;?int(persona[2] ]):
dic[persona[0]]? =?persona
for?value?in?dic.values():
list1.append (valor)
print(list1)
* El código que ves no debe tener sangría, puedes verificarlo yendo a la derecha y puedes verlo en el código fuente correspondiente. Sangría relevante
---------
Espera un momento, te escribiré la idea:
La idea general es cambie dinámicamente el diccionario dic, la clave en el diccionario es el primer elemento de la tupla, es decir, el nombre de la persona, y el valor clave correspondiente es la tupla completa, por ejemplo?dic={'Xiao Wang':? Wang',?' Primer examen',?'' 5')};? Y a. los pares clave-valor en este diccionario están aumentando, b. ¿Cómo deben entenderse a y b aquí?
En primer lugar, a. ¿Están aumentando constantemente los pares clave-valor en este diccionario?
Por ejemplo, si empiezo con un diccionario vacío y luego repito el diccionario, ingresaré al diccionario con el primer elemento de la lista (es decir, el elemento) como clave para encontrar si hay es una clave en el diccionario actual. Si no, agregaré un nuevo par clave-valor en el diccionario, la clave del par clave-valor será el primer elemento de la tupla y la clave correspondiente será la tupla completa. por ejemplo:
El diccionario actual es {'Pequeño Rey':?('Pequeño Rey',?' Primer examen',?'' 5')}, si repito hasta el segundo elemento en el lista, ¿cuál es? ('Xiao Chen', '2do examen', '7')? Tomaré el primer elemento de esta tupla, que es 'Xiao Chen', y veré si hay 'Xiao Chen' en la clave. del diccionario dic Resulta que solo hay una clave en el dic 'Xiao Wang', sin 'Xiao Chen', agregaré un nuevo par clave-valor en el dic y finalmente obtendré un nuevo dic:?{'Xiao Wang. ':? ('Xiao Wang',?' Primer examen',?'' 5'), ?Xiao Chen': ('Xiao Chen', 'Segundo examen', '7')}.
Mire el punto b nuevamente: el valor clave cambia constantemente:
Continuando con lo anterior, el valor del diccionario dic en este momento es {'Xiao Wang': (' Pequeño Rey', ?' Primer examen', ?'' 5'), ?' Xiao Chen': ('Xiao Chen', 'Segundo examen', '7'), ? 'Segundo examen' Examen', '7')}, luego recorro la lista hasta el tercer elemento, que es ('Xiao Chen', 'Primer examen', '1').
En este momento, la lógica de procesamiento anterior sigue siendo la misma. Tome el primer elemento de la tupla, busque la clave en dic y vea si existe en el diccionario. Encuentre si existe la clave 'Xiao Chen' en dic. y luego continúe con el paso 2. Utilice el tercer elemento de la tupla con el valor clave 'Xiao Chen' en dic para comparar con la tupla cuyo tercer elemento es 'Xiao Chen' actualmente sacado de la lista del primer elemento. el diccionario Si el elemento es más grande, el primer elemento en la tupla del tercer elemento es 'Xiao Chen', '1', '1').
Al final, obtenemos un diccionario con una clave única cuyo valor de clave correspondiente es el tercer valor de la misma tupla que el primer elemento con el valor más grande en el diccionario.
Como desea que el tipo final sea un diccionario, el siguiente paso es convertir el diccionario dic al diccionario que desee. dic.alues() obtendrá un iterador sobre todos los valores en dic y luego usará un bucle for para iterar sobre el iterador y agregará el valor de cada iterador a list1.
La lista impresa final1 cumple con los requisitos del tema.