Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
¿El orden de las teclas es el mismo para OrderedDict y dict?

dict mantiene el orden de inserción desde Python 3.6 (ver esto ).

OrderedDict se desarrolló solo para este propósito (antes de Python 3.6).

Desde Python 3.6, ¿el orden de las claves es siempre el mismo para dict u OrderedDict ?

Me pregunto si puedo hacer esto en mi código y tener siempre el mismo comportamiento (excepto la igualdad y algunos métodos extendidos en OrderedDict ) pero de manera más eficiente:

 if sys.version_info[:2] >= (3, 6): OrderedDict = dict else: from collections import OrderedDict

O expresado de manera diferente, para Python> = 3.6, ¿hay alguna razón para usar OrderedDict ?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Me doy cuenta de que el comportamiento diferente de la igualdad ( __eq__ ) puede ser en realidad una preocupación importante, por qué tal fragmento de código probablemente no sea bueno.

Sin embargo, aún podrías hacer esto:

 if sys.version_info[:2] >= (3, 6): OrderedDict = dict else: from collections import OrderedDict as _OrderedDict class OrderedDict(_OrderedDict): __eq__ = dict.__eq__ __ne__ = dict.__ne__

La diferencia es que con las collections.OrderedDict originales. OrderedDict, {1:1,2:2} no es lo mismo que {2:2,1:1} , pero para dict y mi OrderedDict sobrescrito en este ejemplo, es lo mismo .

over 4 years ago · Santiago Trujillo Denunciar

0

Algunos comportamientos siguen siendo los mismos, pero OrderedDict son reversibles y dict no lo son:

 from collections import OrderedDict d = { "a" : 1, "c" : 2} od = OrderedDict(d.items()) print(list(reversed(od))) print(list(reversed(d)))

Producción

 ['c', 'a'] Traceback (most recent call last): File "path/to/file", line 8, in <module> print(list(reversed(d))) TypeError: 'dict' object is not reversible

De la documentación :

Además de los métodos de mapeo habituales, los diccionarios ordenados también admiten la iteración inversa utilizando reversed().

over 4 years ago · Santiago Trujillo Denunciar

0

Tanto OrderedDict como dict están ordenados por inserción¹ para la iteración. Prácticamente no hay razón para usar OrderedDict si el orden de iteración es el único punto decisivo, especialmente si no es necesario volver a ordenar.
Obviamente, si se desea el orden de comparación , OrderedDict y dict no son intercambiables.

O expresado de manera diferente, para Python> = 3.6, ¿hay alguna razón para usar OrderedDict ?

En estos días OrderedDict es dict qué deque es list , básicamente. OrderedDict / deque se basan en listas enlazadas² mientras que dict / list se basan en matrices. Los primeros tienen mejor semántica pop/move/FIFO, ya que los elementos se pueden eliminar desde el inicio/medio sin mover otros elementos.

Dado que las matrices son generalmente muy amigables con la memoria caché, la ventaja de la lista vinculada solo entra en juego para contenedores muy grandes. Además, OrderedDict (a diferencia de deque ) no tiene garantías para la semántica de su lista enlazada y, por lo tanto, es posible que su ventaja no sea portátil. OrderedDict debe usarse principalmente si se necesitan muchas operaciones pop/move/FIFO y la evaluación comparativa puede comparar el rendimiento de dict frente a OrderedDict en la práctica.


¹Esto se aplica a todas las implementaciones admitidas actualmente que cumplen con la especificación del lenguaje Python, es decir, CPython y PyPy desde Python 3.6.

² OrderedDict en CPython aún conserva el acceso a la clave O(1). Esto se logra al tener también una tabla de búsqueda "regular", utilizando la lista vinculada para el orden entre artículos y la tabla de búsqueda para el acceso directo a artículos. Es complicado.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda