Sono nuovo di perl, nella maggior parte dei posti in cui viene usato l'hash viene dato un riferimento ai dizionari di Python. Una differenza che ho notato è che gli hash non conservano l'ordine degli elementi. Vorrei sapere se ci sono alcune differenze più concrete e fondamentali tra i due.differenza tra l'hash di perl e il dizionario di python
risposta
La differenza fondamentale è che gli hash perl non generano errori se si accede a elementi che non sono presenti.
$ 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 hash auto creare elementi troppo a differenza di pitone
$ 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'
$
Se si sta convertendo perl
-python
quelle sono le cose principali che cattura fuori.
Si dovrebbe 'usare rigoroso; usa gli avvertimenti; in ogni caso, in tutti gli script Perl. Ciò eliminerà anche alcune di queste differenze. Penso che scoprirete che la maggior parte delle differenze significative si trovano in altre parti dei linguaggi, come il paradigma "tutto è un oggetto" di Python e nella gestione delle eccezioni. – tripleee
@triplee 'usa rigorosamente; usa avvertimenti; 'non fa alcuna differenza in questo caso, ti vieta di usare variabili non dichiarate, non voci di dizionario non definite. – ZyX
È possibile eseguire l'emulazione del comportamento Perl con 'collections.defaultdict' in Python, ma è comunque necessario preoccuparsi dei tipi di oggetti. –
Un'altra importante differenza è che in Python è possibile avere oggetti (definiti dall'utente) come chiavi del dizionario. I dizionari utilizzeranno i metodi __hash__
e __eq__
degli oggetti per gestirlo.
In Perl, non è possibile utilizzare gli oggetti come hash per impostazione predefinita. Le chiavi vengono memorizzate come stringhe e gli oggetti vengono interpolati alle stringhe se si tenta di utilizzarli come chiavi. (Tuttavia, è possibile utilizzare gli oggetti come chiavi utilizzando un hash legato con un modulo come Tie::RefHash.)
- 1. Differenza tra memcache e dizionario python
- 2. Differenza tra dizionario e ordereddict in python
- 3. Differenza tra Dizionario e Hashtable
- 4. Differenza tra $ @ e $! in perl
- 5. F #: Differenza tra dizionario, Hashtable e Mappa
- 6. Differenza tra dizionario e dizionario <Tkey,Tvalue>
- 7. differenza tra ./test.pl e perl test.pl
- 8. Differenza tra "" e "" in Python
- 9. Python: Differenza tra `is` e` == `?
- 10. Differenza tra mappa e dict
- 11. Durante lo scripting, qual è la differenza tra #!/Usr/bin/perl e #!/Usr/bin/env perl?
- 12. differenza tra di inoltro e il reindirizzamento
- 13. Qual è la differenza tra schema e dizionario dati?
- 14. RabbitMQ: Come inviare il dizionario Python tra il produttore e il consumatore Python?
- 15. In Perl, qual è la differenza tra un file .pm (Perl module) e .pl (Perl script)?
- 16. Qual è la differenza tra Hashtable e Dizionario?
- 17. Qual è la differenza tra un dizionario e un array?
- 18. Differenza tra float Python e numpy float32
- 19. Differenza tra Bytearray e List in Python
- 20. Qualche differenza tra dir() e locals() in Python?
- 21. Differenza tra & la funzione e la funzione() in Perl
- 22. Python Dizionario metodo di copia
- 23. Perl Tkx, qual è la differenza tra "pulsante" e "ttk__button"?
- 24. Differenza tra ritorni e stampa in python?
- 25. Python - Differenza tra docopt e argparse
- 26. C'è qualche differenza tra cpython e python
- 27. Differenza tra printf, print e sprintf in Perl?
- 28. Differenza tra generazione di numeri casuali C++ e Python
- 29. Differenza in python tra basestring e types.StringType?
- 30. Differenza tra os.path.exists e os.path.isfile in python
I dizionari Python non mantengono l'ordine degli elementi. –
I dizionari Python non conservano neanche l'ordine degli elementi; sono implementati come tabelle hash. – Philipp