PRESENT
I like the idea of allowing
>>> d[1, 2, 3, a=4, b=5]
and will explore it further.
First, we can already write
>>> f(1, 2, 3, a=4, b=5)
but that only works for the get operation. For set the present behaviour is
>>> f(1, 2, 3, a=4, b=5) = None
SyntaxError: can't assign to function call
and I see no good reason to change that.
Going further, I'd say that allowing both
>>> d[something] = value
>>> value = d[something]
is essential to the difference between f(something) and d[something]. Both are expressions, but only one of them can be assigned to.