Re: Dictionaries with variable default.

2014-11-04 Thread Antoon Pardon
Op 03-11-14 om 12:09 schreef Chris Angelico:
 On Mon, Nov 3, 2014 at 10:04 PM, Antoon Pardon
 antoon.par...@rece.vub.ac.be wrote:
 Is it possible to have a default dictionary where the default is dependant
 on the key?

 I was hoping something like this might work:
 m = defaultdict(lambda key: key+1)
 But it obviously doesn't:
 m[3]
 Traceback (most recent call last):
   File stdin, line 1, in module
 TypeError: lambda() takes exactly 1 argument (0 given)
 Yes, but not with the defaultdict. Instead, just implement __missing__:

 class KeyPlusOne(dict):
 def __missing__(self, key): return key+1

 ChrisA

So How should I call this:

class ...dict(dict):
def __init__(self, fun):
self.fun = fun

def __missing__(self, key):
   return self.fun(key)


-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Dictionaries with variable default.

2014-11-04 Thread Cousin Stanley

 So How should I call this:
 
 class ...dict(dict):
 def __init__(self, fun):
 self.fun = fun
 
 def __missing__(self, key):
 return self.fun(key)

  I don't know how you should,
  but I tried the following 
  which seems to work  

class KeyPlusOne( dict ) :
def __missing__( self , key ) : 
return ( 2 * key ) + 1 

kp1 = KeyPlusOne()

d   = { }

for n in range( 11 ) :  
d[ n ] = kp1[ n ]

print '\n   key :  value \n'

for key , value in d.iteritems() : 
print '%2d :  %2d' % ( key , value )


-- 
Stanley C. Kitching
Human Being
Phoenix, Arizona
-- 
https://mail.python.org/mailman/listinfo/python-list


Dictionaries with variable default.

2014-11-03 Thread Antoon Pardon
Is it possible to have a default dictionary where the default is dependant
on the key?

I was hoping something like this might work:
 m = defaultdict(lambda key: key+1)

But it obviously doesn't:
 m[3]

Traceback (most recent call last):
  File stdin, line 1, in module
TypeError: lambda() takes exactly 1 argument (0 given)

-- 
Antoon Pardon
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Dictionaries with variable default.

2014-11-03 Thread Chris Angelico
On Mon, Nov 3, 2014 at 10:04 PM, Antoon Pardon
antoon.par...@rece.vub.ac.be wrote:
 Is it possible to have a default dictionary where the default is dependant
 on the key?

 I was hoping something like this might work:
 m = defaultdict(lambda key: key+1)

 But it obviously doesn't:
 m[3]

 Traceback (most recent call last):
   File stdin, line 1, in module
 TypeError: lambda() takes exactly 1 argument (0 given)

Yes, but not with the defaultdict. Instead, just implement __missing__:

class KeyPlusOne(dict):
def __missing__(self, key): return key+1

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list