如果我有一个字典如下(有一些列表):
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}
Run Code Online (Sandbox Code Playgroud)
我如何从一本新词典:
即
new_d = { ('1','alpha'): 6, ('1','beta'): 1, ('2','alpha'): 2, ('2','beta'): 3}
Run Code Online (Sandbox Code Playgroud)
我有以下代码,但似乎不对.
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
Run Code Online (Sandbox Code Playgroud)
请帮助评论/建议.谢谢 :).
两个外部循环是冗余的,只是遍历键值对d.您可以使用轻松提取密钥的三个组件split().这是代码:
new_d = {}
for k, v in d.items():
u, n, r = k.split('_')
new_d[(n, r)] = v + new_d.get((n, r), 0)
Run Code Online (Sandbox Code Playgroud)