擅长:python、mysql、java
<p>使用<code>defaultdict</code>的一种方法:</p>
<pre><code>from collections import defaultdict
bdays = defaultdict(int)
for entry in mylist[1:]:
bdays[int(entry[3])] += int(entry[4])
</code></pre>
<p>其中<code>mylist</code>是您拥有的列表。另一种方法是,使用较少的<code>import</code>过度杀戮,并使用您实际上知道键是什么的事实,是一个很短的整数范围,因此您根本不需要字典:</p>
<pre><code>bdays = [0 for _ in range(7)]
for entry in mylist:
bdays[int(entry[3])] += int(entry[4])
</code></pre>
<p>或者以一种更简洁,也许更不可读的方式:</p>
<pre><code>list((sum(int(x[4]) for x in mylist[1:] if int(x[3]) == i) for i in range(1,8)))
</code></pre>
<p>或者坚持<code>dict</code>:</p>
<pre><code>dict(((i,sum(int(x[4]) for x in mylist[1:] if int(x[3]) == i)) for i in range(1,8)))
</code></pre>
<p>所有这些都确保了0个工作日也与0一起列出(可能是一个缺点?)。你知道吗</p>
<p>第一种解决方案的缺点是(至少从一个角度来看)任何键都是有效的,并且默认返回0。你知道吗</p>
<p>最后两个比较慢,因为它们迭代<code>mylist</code>7次。你知道吗</p>