Unterschied zwischen Perl's Hash und Python's Dictionary

8

Ich bin neu in Perl, an den meisten Stellen, an denen Hash verwendet wird, wird ein Verweis auf Pythons Wörterbücher gegeben. Ein Unterschied, den ich bemerkt habe, ist, dass die Hashes die Reihenfolge der Elemente nicht beibehalten. Ich würde gerne wissen, ob es zwischen den beiden etwas konkretere und fundamentale Unterschiede gibt.

    
CuriousSid 20.05.2012, 19:20
quelle

2 Antworten

17

Der grundlegendste Unterschied besteht darin, dass Perl-Hashes keine Fehler auslösen, wenn Sie auf Elemente zugreifen, die nicht dort sind.

%Vor%

Perl-Hashes erstellen automatisch Elemente, die anders als Python sind

%Vor%

Wenn Sie perl in python konvertieren, sind das die wichtigsten Dinge, die Sie auffangen.

    
Nick Craig-Wood 20.05.2012, 19:30
quelle
8

Ein weiterer wichtiger Unterschied ist, dass Sie in Python (benutzerdefinierte) Objekte als Ihre Wörterbuchschlüssel haben können. Wörterbücher verwenden die Methoden __hash__ und __eq__ der Objekte, um dies zu verwalten.

In Perl können Sie standardmäßig keine Objekte als Hash-Schlüssel verwenden. Schlüssel werden als Zeichenfolgen gespeichert und Objekte werden in Zeichenfolgen interpoliert, wenn Sie versuchen, sie als Schlüssel zu verwenden. (Es ist jedoch möglich, Objekte als Schlüssel zu verwenden, indem Sie einen gebundenen Hash mit einem Modul wie Tie :: RefHash verwenden .)

    
stevenl 21.05.2012 01:12
quelle

Tags und Links