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

285
Visualizações
¿Por qué los conjuntos de Python no conservan el orden de inserción?

Me sorprendió descubrir recientemente que, si bien se garantiza que los dictados conservan el orden de inserción en Python 3.7+, los conjuntos no lo son:

 >>> d = {'a': 1, 'b': 2, 'c': 3} >>> d {'a': 1, 'b': 2, 'c': 3} >>> d['d'] = 4 >>> d {'a': 1, 'b': 2, 'c': 3, 'd': 4}
 >>> s = {'a', 'b', 'c'} >>> s {'b', 'a', 'c'} >>> s.add('d') >>> s {'d', 'b', 'a', 'c'}

¿Cuál es la razón de esta diferencia? ¿Las mismas mejoras de eficiencia que llevaron al equipo de Python a cambiar la implementación de dict no se aplican también a los conjuntos?

No estoy buscando punteros a implementaciones de conjuntos ordenados o formas de usar dictados como suplentes para conjuntos. Me pregunto por qué el equipo de Python no hizo que los conjuntos incorporados conservaran el orden al mismo tiempo que lo hicieron para los dictados.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Discusiones

Su pregunta es pertinente y ya se ha discutido mucho en python-devs no hace mucho tiempo. R. Hettinger compartió una lista de razones en ese hilo . El estado de la cuestión parece abierto ahora, poco después de esta respuesta detallada de T. Peters.

En resumen, la implementación de dictados modernos que preservan el orden de inserción es única y no se considera apropiada con conjuntos. En particular, los dictados se usan en todas partes para ejecutar Python (por ejemplo __dict__ en espacios de nombres de objetos). Una de las principales motivaciones detrás del dict moderno fue reducir el tamaño, lo que hace que Python sea más eficiente en términos de memoria en general. Por el contrario, los conjuntos son menos frecuentes que los dictados dentro del núcleo de Python y, por lo tanto, disuaden de tal refactorización. Véase también la charla de R. Hettinger sobre la implementación moderna de dictados.


Perspectivas

La naturaleza desordenada de los conjuntos en Python es paralela al comportamiento de los conjuntos matemáticos . El orden no está garantizado.

El concepto matemático correspondiente está desordenado y sería extraño imponer tal orden - R. Hettinger

Si se introdujera orden de cualquier tipo en los conjuntos en Python, entonces este comportamiento cumpliría con una estructura matemática completamente separada, a saber, un conjunto ordenado (u Oset). Los osets juegan un rol separado en matemáticas, particularmente en combinatoria. Una aplicación práctica de Osets se observa en el cambio de campanas .

Tener conjuntos desordenados es consistente con una estructura de datos muy genérica y omnipresente que desancla la mayoría de las matemáticas modernas, es decir, la teoría de conjuntos . Envié, es bueno tener conjuntos desordenados en Python.

Ver también publicaciones relacionadas que amplían este tema:

  • Convertir una lista en un conjunto cambia el orden de los elementos
  • Obtenga valores únicos de una lista en python
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