Quiero ordenar un diccionario en Swift. Tengo un diccionario como:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
etc. Quiero que sea como
"A" => Array[]
"D" => Array[]
"Z" => Array[]
etc.
He intentado muchas soluciones en SO pero nadie trabajó para mí. Estoy usando XCode6 Beta 5 y en él algunos están dando error de compilación y algunas soluciones están dando excepciones. Entonces, cualquiera que pueda publicar la copia de trabajo de la clasificación del diccionario.
swift
sorting
dictionary
Aleem Ahmad
fuente
fuente
sortedKeys
función.Respuestas:
EDITAR:
La matriz ordenada del código anterior contiene solo claves, mientras que los valores deben recuperarse del diccionario original. Sin embargo,
'Dictionary'
también es un'CollectionType'
par de (clave, valor) y podemos usar la'sorted'
función global para obtener una matriz ordenada que contenga tanto claves como valores, de esta manera:EDIT2: la sintaxis Swift cambiante mensual prefiere actualmente
Lo global
sorted
está en desuso.fuente
let sortedKeys = dictionary.keys.sorted()
Swift 2.0
Versión actualizada de la respuesta de Ivica M:
Swift 3
Aviso:
No se sorprenda de que el tipo resultante sea una matriz en lugar de un diccionario. ¡Los diccionarios no se pueden ordenar ! El tipo de datos resultante es una matriz ordenada, al igual que en la respuesta de @ Ivica.
fuente
Binary operator > can not be compared to two
cualquier operandos. Downcasting tampoco funcionaSi desea iterar sobre las claves y los valores en un orden ordenado por clave, este formulario es bastante sucinto
fuente
sort
ysorted
. Swift 2: sesort
ha convertidosortInPlace
y sesorted
ha convertidosort
.En swift 4 puedes escribirlo de manera más inteligente:
fuente
Intenté todo lo anterior, en pocas palabras todo lo que necesitas es
fuente
Para Swift 4, lo siguiente me ha funcionado:
fuente
Esta es una alternativa elegante para ordenar el diccionario en sí:
A partir de Swift 4 y 5
fuente
En Swift 5 , para ordenar el Diccionario por CLAVES
Para ordenar el Diccionario por VALORES
fuente
Para Swift 3, el siguiente tipo retorna el diccionario ordenado por claves:
fuente
"ordenado" en iOS 9 y xcode 7.3, swift 2.2 es imposible, cambie "ordenado" a "ordenar", así:
fuente
Array
de lasTuples
, no unDictionary
Swift 5
Ingrese el diccionario que desea ordenar alfabéticamente por teclas.
dict.sorted (por: {$ 0.key <$ 1.key}) por sí mismo devuelve una tupla (valor, valor) en lugar de un diccionario [valor: valor]. Por lo tanto, el bucle for analiza la tupla para que regrese como un diccionario. De esa manera, pones un diccionario y recuperas un diccionario.
fuente
Swift 4 y 5
Para la clasificación de claves de cadena:
Ejemplo:
fuente
Para Swift 3, lo siguiente me funcionó y la sintaxis de Swift 2 no funcionó:
fuente
sortedDict
? ¿Qué esmenu
? Este código tampoco parece ser válido.Swift 3 está ordenado (por: <)
fuente