Skip to content

Instantly share code, notes, and snippets.

@archiechen
Created October 31, 2012 09:45
Show Gist options
  • Save archiechen/3986136 to your computer and use it in GitHub Desktop.
Save archiechen/3986136 to your computer and use it in GitHub Desktop.
overload dict.setdefault,when key exist and value is empty string or None, still set default value to the key.
#-*- coding:utf-8 -*-
'''
重载setdefault方法,当key存在,并且value为空字符串或None时,也会设置为defaultvalue。
>>> d = alwaysdefaultdict()
>>> d.setdefault('key','')
''
>>> d.setdefault('key','default')
'default'
>>> d.get('key')
'default'
>>> d.setdefault('key','newvalue')
'default'
>>> d.get('no_key')
>>> d['newkey']='newvalue'
>>> d.get('newkey')
'newvalue'
>>> d['newkey']
'newvalue'
'''
class alwaysdefaultdict(dict):
def setdefault(self, key, defaultvalue):
if self.has_key(key):
if self.get(key):
return self.get(key)
else:
del self[key]
return super(alwaysdefaultdict, self).setdefault(key, defaultvalue)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment