Greg> Currently, a person can do the following: Greg> foo[slice('a','abc')] = some_sequence Well, I'll be damned! To wit: import types, string, UserDict class SliceableDict(UserDict.UserDict): def __setitem__(self, index, val): if type(index) == types.SliceType: # val must be a sequence. if it's too short, the last # value is replicated. if it's too long, the extra values # are ignored. # keys between index.start and index.stop are assigned elements # of val - index.step is ignored start = index.start stop = index.stop keys = self.data.keys() keys.sort() j = 0 vl = len(val) for k in keys: if index.start <= k < index.stop: self.data[k] = val[j] j = min(j+1, vl-1) else: self.data[index] = val def init_range(self, keys, val=None): for k in keys: self.data[k] = val d = SliceableDict() d.init_range(string.lowercase[0:13], 7) d[slice('a', 'g')] = [12] print d.data Now, about that motivation... Skip Montanaro | http://www.mojam.com/ skip@mojam.com | http://www.musi-cal.com/ "Languages that change by catering to the tastes of non-users tend not to do so well." - Doug Landauer
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4