Seite 1 von 1

Welche Key-Namen kann ein Dictionary haben?

Verfasst: Freitag 29. September 2006, 09:50
von droptix
Ich finde nirgends Angaben dazu, aus welchen Zeichen ein Key eines Dictionary bestehen darf. Ich wollte letztens die Dateistruktur der Festplatte abbilden. Da fragte ich mich, ob dies geht:

Code: Alles auswählen

volume = {}

volume['C:'] = {}
volume['C:']['Dokumente und Einstellungen'] = {}
volume['C:']['Programme'] = {}
volume['C:']['RECYCLER'] = {}
volume['C:']['System Volume Information'] = {}
volume['C:']['WINDOWS'] = {}

print volume
Also in meinem Fall funktioniert es, weil keine Sonderzeichen in den Keys vorkommen. Was aber, wenn deutsche Umlaute oder (ausländische bzw. Unicode) Sonderzeichen im Pfadnamen enthalten sind? Wenn man eben alles einbezieht, was theoretisch möglich wäre: #, Komma, Semikolon, ~, * etc.

Welche Zeichen darf ein Key enthalten?

Verfasst: Freitag 29. September 2006, 10:32
von rayo
Hi

Alles was im String enthalten sein kann, kannst du als Key verwenden.

Soweit ich weiss wird intern ein Hash verwendet, du kannst also sogar Objekte die eine spezielle Methode (glaubs __hash__) implementieren als Key benutzen.

Gruss

Verfasst: Freitag 29. September 2006, 11:39
von BlackJack
Als Schlüssel kann man alles benutzen was vergleichbar ist (__eq__() oder __cmp__()) und eine dazu passende __hash__() Methode hat, d.h. wenn ``a == b`` gilt, dann muss auch ``hash(a) == hash(b)`` gelten. Und der Hash-Wert darf sich im Laufe der "Lebenszeit" eines Objekts nicht ändern.

Geklärt

Verfasst: Freitag 29. September 2006, 11:57
von droptix
Gut, vielen Dank. Woher bekommt man solche detaillierten Infos? In der Python-Dokumentation hab ich sowas nicht gefunden.

Verfasst: Freitag 29. September 2006, 12:18
von Y0Gi
IIRC sagen die Docs: "Alles, was immutable ist".

Verfasst: Freitag 29. September 2006, 13:12
von Costi
hey! genau sowas werde ich wahrscheinlich auch in ca 3 tage brauchen, ein programm das pfade + dateien übersichtlich in hashes einträgt.
kannst du dein programm hier posten ?

danke ( :

(würde es verstehen wenn du es nicht tun willst)

Leider nicht

Verfasst: Freitag 29. September 2006, 13:25
von droptix
Ähm, ich meinte das eher als allgemeine Frage... hab jetzt kein spezielles Programm dafür geschrieben.

Was meinst du mit "in hashes einträgt"? Das klingt nach einem Perl-Liebhaber :D Oder nennt man 'assoziative Arrays' (für mich als PHP-Liebhaber) in Python auch 'Hashes'? Für mich sind das in Python 'Dictionaries'.

Verfasst: Freitag 29. September 2006, 19:09
von Costi
hab jetzt kein spezielles Programm dafür geschrieben.
schade, dan muss ich wohl meine eigenen grauen zellen anstrengen^^

Das klingt nach einem Perl-Liebhaber
bitte nicht! ich hasse perl wirklich über alles: bugs werden als feature ausgegeben und diese "magic" brigt einen wirklich um. ich hatte perl als erste programmiersprache gelernt (hatte kein durchblick und dachte "perl" hört sich ganz gut an :D) deswegen auch die perl bezeichnungen