擅长:python、mysql、java
<p>这个问题与<code>urlencode</code>无关;它是Python dict不能为同一个键保存多个值。您可以通过<code>print</code>输出<code>forms</code>来看到这个,在发送之前,<code>selected_items[]</code>只有一个值。这一个值被编码得很好。在</p>
<p>正如<a href="http://docs.python.org/2/library/urllib.html#urllib.urlencode">the documentation</a>所解释的,有两种方法可以解决这个问题。在</p>
<p>首先,可以将一系列值附加到一个键上,并使用<code>doseq=True</code>标志:</p>
<pre><code>forms = {"_ref_ck": ref,
"type": "create",
"selected_items[]": sel_itms[:10]
}
data = urllib.urlencode(forms, doseq=True)
</code></pre>
<p>或者,可以传递两个元素元组的序列,而不是映射:</p>
^{pr2}$
<p>(您也可以使用允许重复键的自定义<code>Mapping</code>类型,而不是标准的<code>dict</code>,但这可能有点过头了。尤其是因为构造这样一个定制的<code>Mapping</code>类型的通常方法是传递给它一系列键-值对……)</p>