Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda