擅长:python、mysql、java
<p>下面是一个使用<code>collections.defaultdict</code>的解决方案</p>
<pre><code>import random
import collections
choices = ['a', 'b', 'c', 'd', 'e', 'f']
longlist = []
for i in range(1, 101):
longlist.append((i, tuple(random.sample(choices, 2))))
print longlist
final = collections.defaultdict(lambda: collections.defaultdict(list))
for value, (key1, key2) in longlist:
final[key1][key2].append(value)
print final
</code></pre>
<p>一般来说,更改代码的方法是首先确保嵌套字典的存在(集合.defaultdict为您处理这个)然后总是附加一次。在</p>
<p>有点像</p>
^{pr2}$
<p>也不是for行vs“for each…”这是将iterable中的项解包。你也可以这么做</p>
<pre><code>for value, keys in longlist:
</code></pre>
<p>但是,由于keys也是iterable,所以如果用parens包装它,也可以将其解包。在</p>