]> granicus.if.org Git - python/commitdiff
Faster and simpler _replace() method
authorRaymond Hettinger <python@rcn.com>
Fri, 14 Dec 2007 19:19:59 +0000 (19:19 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 14 Dec 2007 19:19:59 +0000 (19:19 +0000)
Doc/library/collections.rst
Lib/collections.py

index d5f4283f8a92fd092ac2bded17ee830baf34d62e..d782c6927d5ded1e85201b41ff7e411d951ecd50 100644 (file)
@@ -402,7 +402,7 @@ Example::
 
            def _replace(self, **kwds):
                'Return a new Point object replacing specified fields with new values'
-               return Point(**dict(zip(('x', 'y'), self), **kwds))
+               return Point(*map(kwds.get, ('x', 'y'), self))
 
            x = property(itemgetter(0))
            y = property(itemgetter(1))
index c3173db9da3ab318b00908a21ce2ab9eb1c2f5da..be4d4fdc6f83d155ac8de7a73207b7194c88cf43 100644 (file)
@@ -71,7 +71,7 @@ def namedtuple(typename, field_names, verbose=False):
             return dict(zip(%(field_names)r, self)) \n
         def _replace(self, **kwds):
             'Return a new %(typename)s object replacing specified fields with new values'
-            return %(typename)s(**dict(zip(%(field_names)r, self), **kwds))  \n\n''' % locals()
+            return %(typename)s(*map(kwds.get, %(field_names)r, self)) \n\n''' % locals()
     for i, name in enumerate(field_names):
         template += '        %s = property(itemgetter(%d))\n' % (name, i)
     if verbose: