Welche Key-Namen kann ein Dictionary haben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Freitag 29. September 2006, 09:50

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?
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 29. September 2006, 10:32

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
BlackJack

Freitag 29. September 2006, 11:39

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.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Freitag 29. September 2006, 11:57

Gut, vielen Dank. Woher bekommt man solche detaillierten Infos? In der Python-Dokumentation hab ich sowas nicht gefunden.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 29. September 2006, 12:18

IIRC sagen die Docs: "Alles, was immutable ist".
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 29. September 2006, 13:12

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)
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Freitag 29. September 2006, 13:25

Ä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'.
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Freitag 29. September 2006, 19:09

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
Antworten