Hallo Leute,
ich bin ganz neu in Python-Welt. Ich habe eine grosse Liste, die aus mehreren Dictionaries besteht. z.B: L = [{"a1":"1", "b1":"23"},{"a1":"112", "b1":"2wws"}, ..... ]
ich will diese Liste bearbeiten und eine neue dict() erstellen, die folgendermassen aussehen sollte:
L_Neu = {"a1":["1","112",....], "b1":["23","2wws",...]}
kann mir Jemand weiterhelfen?!
Dictionary- und Listen-Bearbeitung
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi koukoun!koukoun hat geschrieben:kann mir Jemand weiterhelfen?!
Willkommen im Python-Forum!
Das hier könnte ein Lösungsansatz für dich sein:
Code: Alles auswählen
mylist = [
{"a1":"1", "b1":"23"},
{"a1":"112", "b1":"2wws"},
{"a1":"113", "b1":"3wws"},
]
new_dict = {}
for listitem in mylist:
for key, value in listitem.items():
valuelist = new_dict.setdefault(key, [])
valuelist.append(value)
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo Gerold,
danke fuer deine Unterstuezung. Wenn ich mit "values" arbeite:
bekomme ich eine Liste, die aus Items besteht aber in diesem Form:
valuelist=[('a1','1'), ('b1','23'), ('a1','112'), ('b1','2wws'), ('a1','113'), ('b1','3wws')]
Was ich gern haben moechte ist wie gesagt eine dict die folgendermassen aussehen sollte:
valuelist={"a1":["1", "112", "113"], "b1":["23", "2wws", "3wws"]}
ich hab schon paar mal ausprobiert, aber irgendwie klappt das nicht. mir ist die Python seit paar Tagen bekannt, aber irgendwie muss ich es packen.
Wenn du eine Idee haettest, waere sehr dankbar dafuer.
Danke noch mal
Edit by Gerold: Code in Code-Tags gestellt
danke fuer deine Unterstuezung. Wenn ich mit "values" arbeite:
Code: Alles auswählen
mylist = [
{"a1":"1", "b1":"23"},
{"a1":"112", "b1":"2wws"},
{"a1":"113", "b1":"3wws"},
]
new_dict = {}
for listitem in mylist:
for value in listitem.items():
valuelist = new_dict.setdefault(key, [])
valuelist.append(value)
valuelist=[('a1','1'), ('b1','23'), ('a1','112'), ('b1','2wws'), ('a1','113'), ('b1','3wws')]
Was ich gern haben moechte ist wie gesagt eine dict die folgendermassen aussehen sollte:
valuelist={"a1":["1", "112", "113"], "b1":["23", "2wws", "3wws"]}
ich hab schon paar mal ausprobiert, aber irgendwie klappt das nicht. mir ist die Python seit paar Tagen bekannt, aber irgendwie muss ich es packen.
Wenn du eine Idee haettest, waere sehr dankbar dafuer.
Danke noch mal
Edit by Gerold: Code in Code-Tags gestellt
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Code: Alles auswählen
J:\Dokumente und Einstellungen\Gerold\Desktop\Neuer Ordner>diff a.py b.py
10c10
< for key, value in listitem.items():
---
> for value in listitem.items():
J:\Dokumente und Einstellungen\Gerold\Desktop\Neuer Ordner>
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo Gerold,
nach dem ich das Ganze korriegiert habe, bekomme ich in valuelist = ['23', '2wws', '3wws'] ..das heisst die Werte von "b1".
Wie soll ich eine andere Liste erstellen, die die Werte von "a1" beinhaltet?!
Danke
nach dem ich das Ganze korriegiert habe, bekomme ich in valuelist = ['23', '2wws', '3wws'] ..das heisst die Werte von "b1".
Wie soll ich eine andere Liste erstellen, die die Werte von "a1" beinhaltet?!
Danke
Schau mal auf den Post von Gerold, vor dir. Du hast in Zeile 10
anstatt
Also bei mir geht es wunderbärchen *g*
MfG EnTeQuAk
€dit: da war einer schneller *g*.
Ist zumindest bei mir so. Wenn bei dir nicht, poste doch bitte nochmal deinen Code.
Code: Alles auswählen
for value in listitem.items():
Code: Alles auswählen
for key, value in listitem.items():
MfG EnTeQuAk
€dit: da war einer schneller *g*.
Warum? Du müsstest folgenden Output bekommen:
nach dem ich das Ganze korriegiert habe, bekomme ich in valuelist = ['23', '2wws', '3wws'] ..das heisst die Werte von "b1".
Wie soll ich eine andere Liste erstellen, die die Werte von "a1" beinhaltet?!
Code: Alles auswählen
>>>
{'a1': ['1', '112', '113'], 'b1': ['23', '2wws', '3wws']}
Danke EnTeQuAk
also mein Code lautet:
mylist = [{"a1":"1", "b1":"23"},{"a1":"112", "b1":"2wws"}, {"a1":"113", "b1":"3wws"}]
new_dict = {}
for listitem in mylist:
for key, value in listitem.items():
valuelist=new_dict.setdefault(key, [])
valuelist.append(value)
print valuelist
>>> ['23', '2wws', '3wws']
also mein Code lautet:
mylist = [{"a1":"1", "b1":"23"},{"a1":"112", "b1":"2wws"}, {"a1":"113", "b1":"3wws"}]
new_dict = {}
for listitem in mylist:
for key, value in listitem.items():
valuelist=new_dict.setdefault(key, [])
valuelist.append(value)
print valuelist
>>> ['23', '2wws', '3wws']
Wollte ich grad sagen *g*
Und btw: füge doch bitte um deinen Code
[/code]
Tags ein!
MFG EnTeQuAk
Code: Alles auswählen
>> mylist = [{"a1":"1", "b1":"23"},
... {"a1":"112", "b1":"2wws"},
... {"a1":"113", "b1": "3wws"}]
>>> new_dict = {}
>>> for listitem in mylist:
... for key, value in listitem.items():
... valuelist=new_dict.setdefault(key, [])
... valuelist.append(value)
...
>>> print new_dict
{'a1': ['1', '112', '113'], 'b1': ['23', '2wws', '3wws']}
Code: Alles auswählen
[code=py]#dein code
Tags ein!
MFG EnTeQuAk