擅长:python、mysql、java
<p>问题的根源在于:</p>
<pre><code>d[groupIndex] = list[i]
</code></pre>
<p>换句话说,当一个键不在字典中时,可以在该键下添加一个<em>单值</em>(<code>Element</code>对象)。下次看到该键时,尝试附加到该值。但不能附加到单个值。您需要一个容器类型(如列表)来追加。Python不会神奇地将<code>Element</code>对象变成列表!</p>
<p>解决办法很简单。如果您希望字典的值是列表,那么就<em>这样做。</em>添加第一个项时,附加一个元素列表:</p>
<pre><code>d[groupIndex] = [list[i]]
</code></pre>
<p>或者,可以从原始列表中提取一个条目片段。这已经是一个列表了。</p>
<pre><code>d[groupIndex] = list[i:i+1]
</code></pre>
<p>现在字典的值总是列表,您可以毫无错误地将第二个值和后续值附加到它们。</p>
<p>正如ecatmur所指出的,您可以使用<code>d.setdefault(groupIndex, []).append(list[i])</code>进一步简化这个过程(消除<code>if</code>语句)。如果键不存在,则该值将被视为空列表,您只需始终追加新项。您也可以使用<code>collections.defaultdict(list)</code>。</p>