elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?  (Leído 16,669 veces)
Jirp96

Desconectado Desconectado

Mensajes: 46


Ver Perfil
[SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?
« en: 7 Agosto 2011, 18:26 pm »

Hola!
Como dice el titulo, necesito ordenar("sortear"?) un diccionario.
Tengo un diccionario que contiene las letras del alfabeto en minuscula y sus valores ascii; el par "clave-valor" seria: (letra: CodAscii)

El diccionario lo defino de esta forma(para no anotar letra por letra :xD):

Código
  1. from string import letters
  2.  
  3. let = {}
  4. for x in letters[26:52]: #letters[26:52] es la parte que contiene las letras minusculas
  5.    let[x] = ord(x)
  6.  
  7. del letters

Cuando lo genero, me queda asi:
Código
  1. >>>let
  2. {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 111, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}

Yo lo que quiero es que quede todo el diccionario ordenado(a,b,c,d,e,f....v,w,x,y,z) en vez de tenerlo asi(a,c,b,e,d....w,v,y,x,z)

___________________________________________________________________

He buscado en gugol, y encontre este codigo(lo encontre aqui)

Código
  1. def sortedDictValues1(adict):
  2.    items = adict.items()
  3.    items.sort()
  4.    return [value for key, value in items]
  5.  

y me genera una lista ordenada, hasta aca todo bien(la lista esta ordenada), pero luego si la convierto a diccionario(perdonen el nombre de las variables  :rolleyes:)
Código
  1. >>>l = sortedDictValues1(let)
  2. >>>for i in l:
  3. x[chr(i)] = i
  4.  
  5. >>>x
  6. {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 111, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}
  7.  

Alguien sabe porque pasa esto? y si hay alguna cosa que estoy haciendo mal, o es algo de python(uso Python 2.66 por las dudas)?

Saludos! y gracias por adelantado


« Última modificación: 7 Agosto 2011, 21:17 pm por Jirp96 » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PYTHON] Como ordenar(sort) un diccionario?
« Respuesta #1 en: 7 Agosto 2011, 20:10 pm »

El problema es que no es posible ordenar un diccionario, lo único que puedes hacer es imprimir u obtener una representación de como quedaría ordenado, pero el objeto en si no se puede ordenar.
Por cierto, no se lo que intentas hacer pero, no es mejor esto?
Código
  1. print ord("a")
  2. print chr(97)

Saludos


« Última modificación: 7 Agosto 2011, 20:12 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Jirp96

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: [PYTHON] Como ordenar(sort) un diccionario?
« Respuesta #2 en: 7 Agosto 2011, 21:06 pm »

Hola!
Gracias por responder Novlucker, si no se puede, no se puede xD
_______________________________________________________________________

Por cierto, lo que intentaba hacer con ese diccionario era implementar el Cifrado Cesar en Python :xD.
El diccionario lo usaba para controlar los "límites" de los caracteres, para que no tomara ningun valor fuera del rango "a-z"

Saludos!
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [PYTHON] Como ordenar(sort) un diccionario?
« Respuesta #3 en: 7 Agosto 2011, 21:11 pm »

Pero eso lo puedes hacer con comparaciones a secas :P
Código
  1. print "a">"b"
  2. print "c"<"z"
Por lo cual puedes convertir a enteros con ORD, y luego verificar si es mayor a "z" con CHR

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Jirp96

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: [PYTHON] Como ordenar(sort) un diccionario?
« Respuesta #4 en: 7 Agosto 2011, 21:16 pm »

Es cierto, no lo había pensado de esa forma :xD
La duda ya esta resuelta, ya pueden cerrar si quieren :D
Saludos! y gracias de vuelta por responder =P
En línea

cerototal

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: [SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?
« Respuesta #5 en: 10 Junio 2016, 17:35 pm »

hola, veo que este hilo es antiguo pero he llegado a él consultando la misma duda en algún buscador famoso.

También he dado con un hilo más moderno de otro foro, que resuelve así:

import operator
miDic={"a":2, "b":3, "d":1, "c":1}
resultado = sorted(miDic.items(), key=operator.itemgetter(0))
print resultado
 
[('a', 2), ('b', 3), ('c', 1), ('d', 1)]

El caso es que devuelve el resultado como lista (si no lo entiendo mal). Me pregunto si habría manera de que devolviera un nuevo diccionario.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Como puedo ordenar los elementos gráficos por coordenadas en Python
Scripting
Proxmond 3 4,016 Último mensaje 16 Junio 2014, 16:48 pm
por daryo
[BASH] Ordenar contactos sin utilizar sort
Scripting
zenok 2 2,246 Último mensaje 28 Noviembre 2014, 12:49 pm
por zenok
(python) como ordenar matriz?
Scripting
horacio_b92 5 10,444 Último mensaje 7 Enero 2017, 21:19 pm
por jairoes
problema con .sort python 3
Scripting
HBN 2 2,231 Último mensaje 10 Septiembre 2017, 19:02 pm
por tincopasan
Ordenar lista con sort y key en python.
Scripting
El mas antiguo 6 2,506 Último mensaje 24 Agosto 2022, 20:51 pm
por El mas antiguo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines