Iterar en diccionario

Alexis Roda alexis.roda en urv.es
Mar Sep 7 16:37:09 CEST 2004


Packo wrote:
> Gracias a los dos, duda resuelta, sabía que los diccionarios no tienen orden 
> pero pensaba que habría alguna manera nativa de la clase para emularlo, en 
> fin muchas gracias, lo que habeis dicho me vale, voy a probar primero la 
> clave ordeny si no pues me decido a por una lista de listas.
> 

Prueba con algo asi:

class midict :
   def __init__(self) :
     self._dict = {}
     self._list = []

   def __getitem__(self, k) :
     return self._dict[k]

   def __setitem__(self, k, v) :
     self._dict[k] = v
     if not k in self._list :
       self._list.append(k)

   def __delitem__(self, k):
     del self._dict[k]
     self._list.remove(k)

   def keys(self) : # keys normal
     return self._dict.keys()

   def keys2(self) : # keys con memoria
     return self._list

Los objectos midict emulan parcialmente diccionarios y recuerdan el 
orden de las claves. En este ejemplo, si insertas dos veces un valor con 
la misma clave recuerda el primero.



Saludos
-- 
                                    ////
                                   (@ @)
----------------------------oOO----(_)----OOo--------------------------
<>               Ojo por ojo y el mundo acabara ciego
/\ Alexis Roda - Universitat Rovira i Virgili - Reus, Tarragona (Spain)
-----------------------------------------------------------------------




Más información sobre la lista de distribución Python-es