Seite 1 von 1

Array mit Key und Value

Verfasst: 10.04.2007 15:40
von alen
Hallo Zusammen,

ich bin neu bei PB und habe im Hinterkopf die Möglichkeit, die ich von Python her kenne, ein Dictionary zu erzeugen. Mit einem Key und einem dazu gehörigen Value (Wertepaar) ein Array zu erzeugen.

Nun suche ich sowas ähnliches in PB. Also mehr oder weniger wie ein Assoziatives Array. Habe das was mit LinkedLists gesehen aber irgendwie erschließt sich mir die Benutzung nicht so ganz. Habe irgendwas von einem Index gelesen aber komme nicht ganz dahinter.

Vielleicht kann mir jemand auf die Sprünge helfen.

Grüße
Alen

Re: Array mit Key und Value

Verfasst: 10.04.2007 16:01
von Kiffi
Hallo alen,

willkommen im und an Board!

Zu Deiner Frage:

Leider gibt's in PB keine Dictionaries oder (wie auch in anderen Sprachen
vorhanden) Collections. Das musst Du Dir selber zusammenbauen.

Hier die Array-Variante:

Code: Alles auswählen

Structure s_KeyValue
  Key.s
  Value.s
EndStructure

Dim myArray.s_KeyValue(10)

For I = 0 To 10
  myArray(I)\Key = "MeinSchlüssel" + Str(I)
  myArray(I)\Value = "MeinWert" + Str(I)
Next  

For I = 0 To 10
  Debug myArray(I)\Key 
  Debug myArray(I)\Value
Next
und hier mit LinkedLists:

Code: Alles auswählen

Structure s_KeyValue
  Key.s
  Value.s
EndStructure

NewList myLinkedList.s_KeyValue()

For I = 0 To 10
  AddElement(myLinkedList())
  myLinkedList()\Key = "MeinSchlüssel" + Str(I)
  myLinkedList()\Value = "MeinWert" + Str(I)
Next  

ForEach myLinkedList()
  Debug myLinkedList()\Key 
  Debug myLinkedList()\Value
Next
Grüße ... Kiffi

Verfasst: 10.04.2007 17:48
von Froggerprogger
Die von Kiffi beschriebene Variante ist allerdings im Zugriff nicht so schnell, wie es sein sollte, da das Array linear nach dem Key durchsucht werden muss. (Einfügen: konstante Zeit, Suchen: lineare Zeit)
Man könnte das durch binäre Suche beschleunigen, wenn das Array anhand der Keys sortiert ist. (Einfügen und Suchen: logarithmische Zeit)

Ein assoziatives Array sollte jedoch als Hashtable implementiert sein, damit man konstante Zugriffszeiten beim Einfügen und Suchen erreicht.

Das gibts in PB nicht nativ, aber vielleicht hat ja schon wer Sources dafür veröffentlicht ? (Habe selbst auch noch irgendwo PB-Hashtables rumfliegen, könnte ab nächste Woche Mo mal danach schauen)