Seite 1 von 1
String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Donnerstag 6. September 2012, 10:34
von Fortuna
Hallo,
ich habe ein mehrdimensionales Array welches wie folgt aussieht:
Code: Alles auswählen
mStrArrOptions = {
"Foobar.Test": {
0: "Value1",
1: "Value2",
2: "Value3"
},
"Test.Foobar": {
0: "Value1",
1: "Value2",
2: "Value3"
},
}
Wenn ich nun eine Zeichenkette mittels String.Join() erstellen will, liefert er mit "IronPython.Runtime.List" zurück.
Code: Alles auswählen
string = String.Join(", ", mStrArrOptions[strContent].Values)
Ergebnis: IronPython.Runtime.List
Gewünschtes Ergebnis: Value1, Value2, Value3
Ich habe keine Ahnung warum und per Suche finde ich auch nichts, vielleicht könnt ihr mir helfen?
Re: String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Donnerstag 6. September 2012, 12:38
von cofi
Nun, in Python wuerde das so aussehen:
Code: Alles auswählen
In [1]: options = {
...: "Foobar.Test": {
...: 0: "Value1",
...: 1: "Value2",
...: 2: "Value3"
...: },
...: "Test.Foobar": {
...: 0: "Value1",
...: 1: "Value2",
...: 2: "Value3"
...: },
...: }
In [2]: ', '.join(options['Foobar.Test'].values())
Out[2]: 'Value1, Value2, Value3'
Und ich denke auch in IronPython ist das kein mehrdimensionales Array sondern ein Dictionary.
Re: String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Donnerstag 6. September 2012, 12:43
von BlackJack
@Fortuna: `String.Join` ist eine .NET-Methode, die wandelt anscheinend Datentyp der für die Implementierung von Python's `list`-Typ in eine Zeichenkette um und liefert deshalb den Typnamen.
Wobei schon irgendwelche Magie beim Zugriff auf `Values` passieren muss, denn so ein Attribut kennt Python's `dict`-Typ gar nicht. Da gibt es `values` und das ist eine Methode die man aufrufen muss.
Re: String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Donnerstag 6. September 2012, 16:15
von lunar
@BackJack Die Eigenschaft "Values" ist das Pendant zu ".values()" bei der "Dictionary"-Klasse der .NET-Standardbibliothek. Vielleicht ist ein Python-Dictionary in IronPython gleichzeitig auch ein .NET-Dictionary.
@Fortuna Wenn Du IronPython verwendest, musst Du schon Python programmieren, und insbesondere halt auch dessen Standard-Bibliothek verwenden. C# in anderer Syntax zu versuchen, wird nicht funktionieren.
Re: String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Freitag 7. September 2012, 07:15
von BlackJack
@Lunar: Ich dachte das IronPython vielleicht auch etwas Magie betreibt wie Jython. Da kann man zum Beispiel ``a.x`` und ``a.x = 42`` schreiben wenn das Java-Objekt `getX()`- und `setX()`-Methoden hat, damit der Quelltext nicht so nach Java sondern mehr nach Python aussieht.
Re: String.Join() liefert IronPython.Runtime.List zurück
Verfasst: Freitag 7. September 2012, 09:08
von lunar
@BlackJack .NET hat echte Eigenschaften ("Dictionary.Values" ist keine Methode), insofern ist diese Art von Magie eigentlich nicht nötig.