擅长:python、mysql、java
<p>使用<code>zip(*mydict.values())</code>,而不是<code>zip(mydict.values())</code>。区别在于:</p>
<pre><code>>>> zip(mydict.values())
[([1, 2],), ([3, 4],), ([5, 6],)]
>>> zip(*mydict.values())
[(1, 3, 5), (2, 4, 6)]
</code></pre>
<p>基本上,第二个版本与<code>zip([1, 2], [3, 4], [5, 6])</code>执行相同的操作。在文档中称为<a href="http://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists" rel="nofollow">Unpacking Argument Lists</a>。在</p>
<p>要强制排序,请使用以下命令:</p>
^{pr2}$
<p>这包括报头,所以只需将其传递到<code>writerows()</code>并删除对报头的<code>writerow()</code>调用。在</p>
<p>当然,您可以在那里为<code>sorted()</code>函数提供一个<code>key</code>参数来进行任何排序。例如,为了确保与问题中的顺序相同:</p>
<pre><code>>>> order = {'foo': 0, 'bar': 1, 'asdf': 2}
>>> zip(*([k] + mydict[k] for k in sorted(mydict, key=order.get)))
[('foo', 'bar', 'asdf'), (1, 3, 5), (2, 4, 6)]
</code></pre>