I don't understand the problem here. d[p=q] --> d.__{get,set,del}item__((), ..., p=q) d[1, p=q] --> d.__{get,set,del}item__((1), ..., p=q) d[1, 2, p=q] --> d.__{get,set,del}item__((1, 2), ..., p=q) d[1, 2, 3, p=q] --> d.__{get,set,del}item__((1, 2, 3), ..., p=q) d[1, 2, ..., n, p=q] --> d.__{get,set,del}item__((1, 2, ..., n), ..., p=q) Now obviously the n=1 case is a wart. But the n=0 case isn't a wart. It's just like n=2, n=3, etc. You can't tell the difference between a single tuple argument and n arguments for any n≠1. As far as I can tell the problem when n=0 is no more or less serious than the problem when n≥2. I don't see the point of adding another special case to the spec when it doesn't even solve the general problem.