lunes, 13 de mayo de 2013

desordenar diccionario en python

Buenas!, ando jugando un rato con python ultimamente, retomando mi proyecto de juego de rol. y me encontré un dilema...como desordenar una lista con elementos. en python encontré esta manera muy interesante, así que decidí publicarla para tenerla a mano.
 
El módulo random de Python tiene varias funciones muy útiles como choice, que permite elegir un elemento al asar de una secuencia:
 

>>> import random
 
>>> lista = [1, 2, 3, "hola", 'q', '$', 0]
>>> random.choice(lista)
1
>>> random.choice(lista)
0
>>> random.choice(lista)
3
>>> random.choice(lista)
'q'
>>> random.choice("Esta es una oración muy interesante")
'E'
>>> random.choice((1,2,3,4))
3
 
O shuffle, que desordena una lista (in place, es decir que no retorna una lista desordenada sino que la misma es desordenada):
>>> random.shuffle(lista)
>>> lista
[3, 1, 0, 'hola', '$', 'q', 2]
>>> texto = "Esto es una prueba con SHUFFLE"
>>> random.shuffle(texto)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/random.py", line 262, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: object does not support item assignment
 
Obviamente ni a tuplas ni a strings se puede aplicar esta función ya que esos dos tipos de datos son inmutables.
 
fuente: www.juanjoconti.com.ar

No hay comentarios: