ich habe Strings wie im folgenden Beispiel l1 und l2, also kommaseparierte Zuweisungen von Key-Value-Paaren. Diese wollte ich mit einem Einzeiler aufsplitten und in eine Liste von Dicts (oder wahlweise nur dict) speichern.
Code: Alles auswählen
l1 = 'k1 : v1'
l2 = 'k1:v2:3, k3:v4'
k, v = l1.split(':', 1)
print(k, v)
# k1 v1
l = l1
print([a.split(':', 1) for a in l.split(',')])
# [['k1 ', ' v1']]
print([(k, v) for a in l.split(',') for k, v, *_ in a.split(':', 1)])
# [('k', '1'), (' ', 'v')]
print([(k, v) for a in l.split(',') for k, v, in a.split(':', 1)])
# ValueError: too many values to unpack (expected 2
Das ganze funktioniert aber nicht im Generator-Pattern darunter, da dort bei der Zuweisung von split(':', 1) die Liste in einen String konvertiert wird und dann die Länge vom String bei der Zuweisung entscheidend ist.
Wieso ist das so, was müsste ich machen, damit es doch funktioniert?
Viele Grüße
ManOki