Tengo valores como este:
set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])
Quiero ordenar los valores de cada uno set
en orden creciente. No quiero clasificar entre los conjuntos, sino los valores en cada conjunto.
list
.std::set
está ordenado.Respuestas:
De un comentario:
Eso es fácil. Para cualquier conjunto
s
(o cualquier otra cosa iterable),sorted(s)
devuelve una lista de los elementos des
en orden ordenado:Tenga en cuenta que le
sorted
está dando unlist
, no unset
. Eso es porque el objetivo de un conjunto, tanto en matemáticas como en casi todos los lenguajes de programación , * es que no está ordenado: los conjuntos{1, 2}
y{2, 1}
son el mismo conjunto.Probablemente no desee ordenar esos elementos como cadenas, sino como números (por lo que 4.918560000 vendrá antes de 10.277200999 en lugar de después).
Lo más probable es que la mejor solución almacene los números como números en lugar de cadenas en primer lugar. Pero si no, solo necesita usar una
key
función:Para obtener más información, consulte el ordenar en los documentos oficiales.
* Consulte los comentarios para conocer las excepciones.
fuente
set
signifique "lista ordenada", y tienes que decirunordered_set
que significa "conjunto"…std::set
no exponga el pedido (no sólo en las formas obvias a través de la API, la función de ordenamiento es en realidad parte del tipo de cualquier conjunto dado). El hecho de que los elementos se mantengan siempre ordenados por un estricto orden débil es parte de la propia definición del concepto. Entonces, su argumento es discutible. Pero incluso si no lo fuera, ¿por qué importaría? Los conjuntos están desordenados en casi todos los lenguajes de programación, al igual que en matemáticas. El hecho de que haya un idioma periférico que use la palabra para significar otra cosa no hace que esa afirmación sea menos cierta.