例如像这样:
from werkzeug.datastructures import ImmutableMultiDict
imd = ImmutableMultiDict([('address', u'US'), ('address', 'US'), ('address', 'UK')])
print imd.getlist('address')
印刷:
[u'US', 'US', 'UK']
编辑:
您的 POST 请求已发送application/x-www-form-urlencoded
,这意味着作为键/值对的组合。它不直接支持嵌套的 dict 结构。当我尝试你的 curl-request 时,我得到了这个:
ImmutableMultiDict([('address[US]', u'San Francisco'), ('address[US]', u'New York'), ('address[UK]', u'London')])
所以这里的键是按字面意思解释的。
并使用urllib2
我得到这个结果:
>>> print urllib2.urlopen("http://localhost:5000/post", data=urllib.urlencode(address_dict)).read()
ImmutableMultiDict([('address', u"{'UK': 'London', 'US': 'New York'}")])
这里urlencode
只是发送内部字典的字符串表示。
最后使用requests
:
>>> print requests.post("http://localhost:5000/post", data=address_dict).content
ImmutableMultiDict([('address', u'UK'), ('address', u'US')])
在这里,数组被展平并消除了重复键。
根本没有定义的方式如何以 urlencoded 方式发送像您这样的嵌套字典,因此您必须找到另一个解决方案。