webob.multidict
-- multi-value dictionary object¶
multidict¶
Several parts of WebOb use a "multidict", which is a dictionary where a key can
have multiple values. The quintessential example is a query string like
?pref=red&pref=blue
. The pref
variable has two values, red
and
blue
.
In a multidict, when you do request.GET['pref']
, you'll get back only
'blue'
(the last value of pref
). Sometimes returning a string and
other times returning a list is a cause of frequent exceptions. If you want
all the values back, use request.GET.getall('pref')
. If you want to be
sure there is one and only one value, use request.GET.getone('pref')
,
which will raise an exception if there is zero or more than one value for
pref
.
When you use operations like request.GET.items()
, you'll get back something
like [('pref', 'red'), ('pref', 'blue')]
. All the key/value pairs will
show up. Similarly request.GET.keys()
returns ['pref', 'pref']
.
Multidict is a view on a list of tuples; all the keys are ordered, and all the
values are ordered.