たとえば、次のようにします。
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')])
ここでは、配列がフラット化され、繰り返しキーが削除されます。
あなたのようなネストされた dict を urlencode された方法で送信する方法は定義されていないため、別の解決策を見つける必要があります。