[python] Kopie zanorenych slovniku ci seznamu
Jan Novák
jan.novak na topinfo.cz
Pondělí Červen 21 14:46:15 CEST 2004
Narazil jsem na jednu vlastnost Pythonu.
Potrebuji dale pracovat s kopii objektu, tak aby neovlivnila zdroj.
Otayka zni:
Pokud bude zanoreni kosatejsi, lze to resit i lepe jinak nez smyckou nebo
pomoci modulu copy, ktery je napr. v nasledujicim pripade nekolikanasobne
pomalejsi?
Muj dalsi mozny namet jak by to udelat je serializace a deserializace
struktury. rychlost?
#vnoreny slovnik se da jako odkaz
>>> zdroj={1:{},3:{4:5}}
>>> kopie=zdroj.copy() #pripadne dict(zdroj)
>>> kopie[3][4]=6
>>> zdroj
{1: {}, 3: {4: 6}}
#toto funguje (ale pouze pro 2 vnoreni apod.)
>>> zdroj={1:{},3:{4:5}}
>>> kopie={}
>>> i=zdroj.items()
>>> for k,v in i: kopie[k]=v.copy()
>>> zdroj
{1: {}, 3: {4: 5}}
#toto funguje, ale je to podstatne pomalejsi nez první verze
>>> zdroj={1:{},3:{4:5}}
>>> import copy
>>> kopie=copy.deepcopy(zdroj)
>>> zdroj
{1: {}, 3: {4: 5}}
Diky
Honza Novák
Další informace o konferenci Python