Python3 sorted() función
Descripción
sorted()La función realiza operaciones de ordenación en todos los objetos iterables.
Diferencia entre sort y sorted:
sort es un método aplicado a list, mientras que sorted puede ordenar todos los objetos iterables.
El método sort de list opera sobre la lista existente, mientras que la función incorporada sorted devuelve una nueva list, en lugar de hacerlo sobre la original.
Sintaxis
Sintaxis de sorted:
sorted(iterable, key=None, reverse=False)
Descripción de parámetros:
- iterable -- objeto iterable.
- key -- principalmente se usa para comparar elementos, tiene un solo parámetro; el parámetro de la función concreta se toma del objeto iterable, y especifica un elemento del objeto iterable para realizar la ordenación.
- reverse -- regla de ordenación, reverse = True descendente, reverse = False ascendente (predeterminado).
Valor de retorno
Devuelve la lista reordenada.
Ejemplo
El siguiente ejemplo muestra la forma más sencilla de usar sorted:
[1, 2, 3, 4, 5] # Por defecto ascendente
También puedes usar el método list.sort() de list. Este método modifica la list original (valor de retorno None). Por lo general, este método no es tan conveniente como sorted(): si no necesitas la list original, el método list.sort() es un poco más eficiente.
>>> a.sort()
>>> a
[1,2,3,4,5]
Otra diferencia es que el método list.sort() solo está definido para list, mientras que la función sorted() puede recibir cualquier iterable.
[1, 2, 3, 4, 5]
Usar key para ordenar en orden descendente
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>
Para realizar una ordenación inversa, también se pasa el tercer parámetro reverse=True:
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
El siguiente es un ejemplo más complejo, que ordena la tabla de medallas. Los datos contienen las medallas de oro, plata y bronce de 15 países, usando\ncomo separador:
Ejemplo
stodata = s.split('\n',-1)
# Usar sorted
para = {}
for line in range(len(stodata)):
# Cada línea de datos
data = stodata[line].split(' ')
print(data)
# Construir estructura de datos para={'China': [], 'Russia': []}
para[data[0]] = [int('-' + i) for i in data[1:]]
# Comenzar la ordenación (x
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()
c=[]
for i in new_para:
c.append((i[0]))
for j in range(15):
print(f"{(j+1):2d} {c[j]}")
El resultado de salida es:
['德国', '10', '11', '16'] ['意大利', '10', '10', '20'] ['荷兰', '10', '12', '14'] ['法国', '10', '12', '11'] ['英国', '22', '21', '22'] ['中国', '38', '32', '18'] ['日本', '27', '14', '17'] ['美国', '39', '41', '33'] ['俄罗斯奥委会', '20', '28', '23'] ['澳大利亚', '17', '7', '22'] ['匈牙利', '6', '7', '7'] ['加拿大', '7', '6', '11'] ['古巴', '7', '3', '5'] ['巴西', '7', '6', '8'] ['新西兰', '7', '6', '7'] 1 美国 2 中国 3 日本 4 英国 5 俄罗斯奥委会 6 澳大利亚 7 荷兰 8 法国 9 德国 10 意大利 11 加拿大 12 巴西 13 新西兰 14 古巴 15 匈牙利Otras extensiones
Python3 funciones integradas