metodos - lista dentro de un diccionario python
En Python, ¿cómo puedes recuperar fácilmente elementos ordenados de un diccionario? (8)
Este fragmento lo hará. Si vas a hacerlo con frecuencia, es posible que desees hacer un método de ''ordenar'' o algo así para que sea más fácil para los ojos.
keys = list(d.keys())
keys.sort()
for key in keys:
print d[key]
Editar: la solución de dF es mejor - Olvidé todo sobre sorted ().
Los diccionarios a diferencia de las listas no están ordenados (y no tienen el atributo ''ordenar''). Por lo tanto, no puede confiar en obtener los artículos en el mismo orden cuando los agregó por primera vez.
¿Cuál es la forma más fácil de recorrer un diccionario que contiene cadenas como el valor clave y recuperarlas en orden ascendente por clave?
Por ejemplo, tenías esto:
d = {''b'' : ''this is b'', ''a'': ''this is a'' , ''c'' : ''this is c''}
Quiero imprimir los valores asociados en la siguiente secuencia ordenada por clave:
this is a
this is b
this is c
O más corto,
for key, value in sorted(d.items()):
print value
d = {''b'' : ''this is b'', ''a'': ''this is a'' , ''c'' : ''this is c''}
ks = d.keys()
ks.sort()
for k in ks:
print "this is " + k
>>> d = {''b'' : ''this is b'', ''a'': ''this is a'' , ''c'' : ''this is c''}
>>> for k,v in sorted(d.items()):
... print v, k
...
this is a a
this is b b
this is c c
for key in sorted(d):
print d[key]
También puede ordenar un diccionario por valor y controlar el orden de clasificación:
import operator
d = {''b'' : ''this is 3'', ''a'': ''this is 2'' , ''c'' : ''this is 1''}
for key, value in sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True):
print key, " ", value
Salida:
b esto es 3
a esto es 2
c esto es 1
¿Quiere decir "ordenado" en lugar de "ordenado"? Parece que su pregunta tiene como objetivo ordenar un diccionario y no ordenarlo. Si quiere decir "ordenado", puede usar un OrderedDict del módulo de colecciones. Esos diccionarios recuerdan el orden en que se ingresaron los pares clave / valor:
from collections import OrderedDict
Información de referencia: https://docs.python.org/2/library/collections.html#collections.OrderedDict
¿Quiere decir que necesita los valores ordenados por el valor de la clave? En ese caso, esto debería hacerlo:
for key in sorted(d):
print d[key]
EDITAR: cambiado para usar ordenado (d) en lugar de ordenado (d.keys ()), gracias Eli !