Problem mit verschachtelten Datenstrukturen
Verfasst: Donnerstag 17. Januar 2013, 15:53
Hi,
hab da ein Problem mit meiner Datenstruktur die wie folgt aussieht:
so eine leere Liste erzeuge ich noch dazu.
So ich füge meiner db nun ein paar daten hinzu z.B:
Ausgabe:
soweit so gut, dass klappt auch, ich hab dann 3 listen elemente mit unterschiedlichen namen und beschreibungen
Wenn ich jetzt allerdings in die leere Liste, die jedes Element meiner Hauptliste beinhaltet, Daten reinschreibe werden die neuen Daten in alle Elemente meiner hauptliste hinzugefügt, dies sollte aber nicht sein. hier der Code:
Als ausgabe erhalte ich:
Es sollte aber so aussehen:
Ich steh grad voll auf dem Schlauch warum das so ist und was ich dagegen tun kann.
Vielen Dank für eure Hilfe
hab da ein Problem mit meiner Datenstruktur die wie folgt aussieht:
Code: Alles auswählen
_lv = { 'name_lv' : None,
'desc_lv' : None,
'le' : []
}
_le = { 'name_le' : None,
'date' : None,
'numb' : 0,
'tag' : [],
'abs' : []
}
_tag = {'name_tag' : None,
'desc_tag' : None
}
_abs = {'name_abs' : None,
'desc_abs' : None,
'thema': { 'name_thema' : None,
'desc_thema' : None},
'frage': []
}
_frage = {'desc_frage' : None,
'antw' : {'desc_antw' : None}
}
db = list()
So ich füge meiner db nun ein paar daten hinzu z.B:
Code: Alles auswählen
new_lv1 = _lv.copy()
new_lv2 = _lv.copy()
new_lv3 = _lv.copy()
new_lv1['name_lv'] = 'LV1'
new_lv1['desc_lv'] = 'LV1_DESC'
new_lv2['name_lv'] = 'LV2'
new_lv2['desc_lv'] = 'LV2_DESC'
new_lv3['name_lv'] = 'LV3'
new_lv3['desc_lv'] = 'LV3_DESC'
db.append(new_lv1)
db.append(new_lv2)
db.append(new_lv3)
print db[0]
print db[1]
print db[2]
Code: Alles auswählen
{'name_lv': 'LV1', 'desc_lv': 'LV1_DESC', 'le': []}
{'name_lv': 'LV2', 'desc_lv': 'LV2_DESC', 'le': []}
{'name_lv': 'LV3', 'desc_lv': 'LV3_DESC', 'le': []}
Wenn ich jetzt allerdings in die leere Liste, die jedes Element meiner Hauptliste beinhaltet, Daten reinschreibe werden die neuen Daten in alle Elemente meiner hauptliste hinzugefügt, dies sollte aber nicht sein. hier der Code:
Code: Alles auswählen
new_le = _le.copy()
new_le['name_le'] = 'LE'
new_le['date'] = '10.10.2013'
new_le['numb'] = 1
db[1]['le'].append(new_le)
print db[0]
print db[1]
print db[2]
Code: Alles auswählen
{'name_lv': 'LV1', 'desc_lv': 'LV1_DESC', 'le': [{'date': '10.10.2013', 'name_le': 'LE', 'tag': [], 'abs': [], 'numb': 1}]}
{'name_lv': 'LV2', 'desc_lv': 'LV2_DESC', 'le': [{'date': '10.10.2013', 'name_le': 'LE', 'tag': [], 'abs': [], 'numb': 1}]}
{'name_lv': 'LV3', 'desc_lv': 'LV3_DESC', 'le': [{'date': '10.10.2013', 'name_le': 'LE', 'tag': [], 'abs': [], 'numb': 1}]}
Code: Alles auswählen
{'name_lv': 'LV1', 'desc_lv': 'LV1_DESC', 'le': []}
{'name_lv': 'LV2', 'desc_lv': 'LV2_DESC', 'le': [{'date': '10.10.2013', 'name_le': 'LE', 'tag': [], 'abs': [], 'numb': 1}]}
{'name_lv': 'LV3', 'desc_lv': 'LV3_DESC', 'le': []}
Vielen Dank für eure Hilfe