@@ -39,24 +39,44 @@ def keys(self): return self.Keys
39
39
def items (self ): return [(k ,self [k ]) for k in self .Keys ]
40
40
def values (self ): return self .Values
41
41
def __iter__ (self ): return self .Keys .__iter__ ()
42
- def get (self , key ):
43
- _ , item = self .TryGetValue (key )
44
- return item
42
+ def get (self , key , default = None ):
43
+ existed , item = self .TryGetValue (key )
44
+ return item if existed else default
45
45
46
46
class MutableMappingMixin (MappingMixin , col .MutableMapping ):
47
+ _UNSET_ = object ()
48
+
47
49
def __delitem__ (self , key ):
48
- return self .Remove (key )
50
+ self .Remove (key )
51
+
49
52
def clear (self ):
50
53
self .Clear ()
51
- def pop (self , key ):
52
- return self .Remove (key )
53
- def setdefault (self , key , value ):
54
+
55
+ def pop (self , key , default = _UNSET_ ):
56
+ existed , item = self .TryGetValue (key )
57
+ if existed :
58
+ self .Remove (key )
59
+ return item
60
+ elif default == self ._UNSET_ :
61
+ raise KeyError (key )
62
+ else :
63
+ return default
64
+
65
+ def setdefault (self , key , value = None ):
54
66
existed , item = self .TryGetValue (key )
55
67
if existed :
56
68
return item
57
69
else :
58
70
self [key ] = value
59
71
return value
60
- def update (self , items ):
61
- for key , value in items :
72
+
73
+ def update (self , items , ** kwargs ):
74
+ if isinstance (items , col .Mapping ):
75
+ for key , value in items .items ():
76
+ self [key ] = value
77
+ else :
78
+ for key , value in items :
79
+ self [key ] = value
80
+
81
+ for key , value in kwargs .items ():
62
82
self [key ] = value
0 commit comments