<p>如果我有一本如下所示的字典(包括一些列表):</p>
<pre><code>units = ['a','b']
nums = ['1','2']
ratios = ['alpha', 'beta']
d = {'a_1_alpha':4, 'a_1_beta' :1, 'a_2_alpha' :2, 'a_2_beta': 3, 'b_1_alpha':2}
</code></pre>
<p>如何从一本新字典中找到:</p>
<ul>
<li>形成一个由tuple(num,ratio)#个list nums&ratios项组成的键</li>
<li>该值将是先前字典(d)值的总和。在</li>
</ul>
<p>即</p>
^{pr2}$
<p>我有以下代码,但似乎不对。在</p>
<pre><code>new_d = {}
for num in nums:
for ratio in ratios:
for k,v in d.items():
if ratio in k:
try:
oldval = dict[num,ratio]
except:
oldval = 0
new_d[(num,ratio)] = oldval + v
for p,q in new_d.items():
print p,q
</code></pre>
<p>请帮忙评论/建议。
谢谢:)。在</p>
<p>两个外部循环是冗余的,只需迭代<code>d</code>的键值对。您可以使用<code>split()</code>轻松提取密钥的三个组件。代码如下:</p>
<pre><code>new_d = {}
for k, v in d.items():
u, n, r = k.split('_')
new_d[(n, r)] = v + new_d.get((n, r), 0)
</code></pre>