Soy nuevo en perl, en la mayoría de los lugares donde se usa hash se da una referencia a los diccionarios de python. Una diferencia que he notado es que los hashes no conservan el orden de los elementos. Me gustaría saber si existen diferencias más concretas y fundamentales entre los dos.diferencia entre el hash de perl y el diccionario de python
Respuesta
La diferencia más fundamental es que los hash de perl no arrojan errores si accede a elementos que no están allí.
$ python -c 'd = {}; print d["a"]'
Traceback (most recent call last):
File "<string>", line 1, in <module>
KeyError: 'a'
$ perl -e '$d = {}; print $d->{a}'
$
Perl hashes crear automáticamente los elementos demasiado a diferencia de pitón
$ python -c 'd = dict(); d["a"]["b"]["c"]=1'
Traceback (most recent call last):
File "<string>", line 1, in <module>
KeyError: 'a'
$ perl -e '$d = {}; $d->{a}{b}{c}=1'
$
Si está convirtiendo perl
-python
esas son las principales cosas que te atrapará a cabo.
Deberías 'usar estricto; usa advertencias; 'en todos tus scripts de Perl de todos modos. Eso también eliminará algunas de estas diferencias. Creo que encontrará que la mayoría de las diferencias significativas se encuentran en otras partes de los idiomas, como el paradigma "todo es un objeto" de Python, y en el manejo de excepciones. – tripleee
@triplee 'use strict; use advertencias; 'no hace ninguna diferencia en este caso, le prohíbe utilizar variables no declaradas, no elementos de diccionario indefinidos. – ZyX
Puede ordenar-emular el comportamiento de Perl con 'collections.defaultdict' en Python, pero todavía tiene que preocuparse por los tipos de objetos. –
Otra diferencia importante es que en Python puede tener objetos (definidos por el usuario) como claves del diccionario. Los diccionarios utilizarán los métodos de los objetos __hash__
y __eq__
para gestionar esto.
En Perl, no puede usar objetos como teclas hash por defecto. Las claves se almacenan como cadenas y los objetos se interpolarán a cadenas si intenta utilizarlos como claves. (Sin embargo, es posible usar objetos como claves utilizando un hash vinculado con un módulo como Tie::RefHash).
- 1. Diferencia entre Memcache y Python diccionario
- 2. Diferencia entre encriptación y hash
- 3. Diferencia entre diccionario y Hashtable
- 4. ¿Cuál es la diferencia entre una referencia hash y hash en Perl?
- 5. ¿Qué algoritmo hash utiliza el mapeo del diccionario de Python?
- 6. Diferencia entre 'carácter' y 'octeto' en hash
- 7. ¿Diferencia entre un objeto y un diccionario?
- 8. MD5 hash discrepancia entre Python y PHP?
- 9. ¿Diferencia entre un objeto y un hash?
- 10. Diferencia entre mapa y dict
- 11. Diferencia entre un HashMap y un diccionario ADT
- 12. ¿Cuál es la diferencia entre dict() y {}?
- 13. Diferencia entre dict.clear() y asignar {} en Python
- 14. ¿Cuál es la diferencia entre el esquema y el diccionario de datos?
- 15. Diferencia entre '' y "" en Python
- 16. Python: diferencia entre `is` y` == `?
- 17. La diferencia entre python dict y tr1 :: unordered_map en C++
- 18. En un diccionario de dictados, ¿cómo se emula el comportamiento de auto-vivificación de Perl?
- 19. ¿Cómo funcionan las búsquedas de hash de diccionario de Python?
- 20. yaml multi anidado y el diccionario python
- 21. ¿Diferencia entre el margen y el relleno?
- 22. Diferencia entre el objeto y el objeto
- 23. ¿Diferencia entre el análisis y el paso?
- 24. Python - intersección entre una lista y claves de un diccionario
- 25. Perl Hash de subfunciones
- 26. Cómo borrar un hash de Perl
- 27. diccionario de Python deepcopy
- 28. En PHP, ¿cuál es la diferencia entre hash y mhash?
- 29. Al crear scripts, ¿cuál es la diferencia entre #!/Usr/bin/perl y #!/Usr/bin/env perl?
- 30. ¿Cuál es la diferencia entre un diccionario y una matriz?
Los diccionarios de Python tampoco conservan el orden de los elementos. –
Los diccionarios de Python tampoco conservan el orden de los elementos; se implementan como tablas hash. – Philipp