[Python-de] Dictionary und die Methode copy

Bertram Scharpf lists at bertram-scharpf.de
Mon Feb 21 10:04:40 CET 2005


Hallo,

Am Montag, 21. Feb 2005, 00:57:49 +0100 schrieb Albert Hermeling:
> ich habe ein Dictionary mit Dictionarys als Elemente die wiederrum Listen als 
> Elemente enthalten. Das ganze sieht etwa so aus:
> 
> Dictionary container:
> {'eins': {'martin': [1, 2, 3]}, 'zwei': {'heinz': [4, 5, 6]}}
> 
> wenn ich jetzt container.copy() aufrufe wird von Dictionary container eine 
> flache Kopie erzeugt. Die Dictionarys und Listen im Dictionary bleiben davon 
> unberührt, sie zeigen nach wie vor auf das Original.

In etwa so (ungetestet):

  def deepcopy( obj):
      class C:
          pass
      t = type( obj)
      if t == type( {}):
          r = {}
          for k in obj.keys():
              r[ k] = deepcopy( obj[ k])
          return r
      elif t == type( C()):
          r = C()
          r.__class__ = obj.__class__
          r.__dict__ = deepcopy( obj.__dict__)
      else:
          return obj.copy()

Ich empfehle, an die Klassenobjekte gleich mitzudenken.

Bertram


-- 
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de