我有一个嵌套字典 inputlist
。每个列表有 2 个元组。我想按类 0 和 1 计算每个 tuple
第一个值的总和。
这是我的代码:
inputlist={1:{0: [(5.0, 3.6), (20.0, 0.0)],
1: [(4.0, 0.0), (22.0, 0.0)]},
2:{0: [(2.0, 0.5), (21.0, 0.5)],
1: [(5.0, 0.0), (22.0, 0.0)]}
}
sum_result={}
for k1, v1 in inputlist.items():
for (k2, v2) in v1.items():
sum_result[k2]=1
for i in range(len(v2)):
(value1, value2) = v2[i]
sum_result[k2] += value1
print(sum_result)
输出应如下所示:
{0: 48.0, 1: 53.0}
答案 0 :(得分:1)
这是一个您可以尝试的解决方案。
from collections import defaultdict
sum_ = defaultdict(int)
for k, v in input_list.items():
for ki, vi in v.items():
sum_[ki] += sum(li[0] for li in vi)
print(sum_)
defaultdict(<class 'int'>, {0: 48.0, 1: 53.0})
答案 1 :(得分:1)
你可以试试这个方法:
inputlist={1:{0: [(5.0, 3.6), (20.0, 0.0)],
1: [(4.0, 0.0), (22.0, 0.0)]},
2:{0: [(2.0, 0.5), (21.0, 0.5)],
1: [(5.0, 0.0), (22.0, 0.0)]
}
}
sum_l={}
all_list=[]
for i in inputlist.values():
for j in i.values():
t_sum=0
for k in j:
t_sum+=k[0]
all_list.append(t_sum)
j={0:sum(all_list[::2]),1:sum(all_list[1::2])}
print(j)
你也可以试试这个:
sum_l={}
all_list=[]
sum_={}
for a, b in inputlist.items():
for c, d in b.items():
try:
sum_[c] += sum(li[0] for li in d)
except KeyError:
sum_[c] = sum(li[0] for li in d)
print(sum_)
答案 2 :(得分:1)
这是代码 我希望你现在能理解代码。 0 和 1 的两个独立变量将使您的工作更轻松。当外循环完全执行时,您只需使用循环更新的值初始化 sum_result 字典即可。
inputlist={1:{0: [(5.0, 3.6), (20.0, 0.0)],
1: [(4.0, 0.0), (22.0, 0.0)]},
2:{0: [(2.0, 0.5), (21.0, 0.5)],
1: [(5.0, 0.0), (22.0, 0.0)]
}}
sum_result={}
sum_of_tuples_for_0=0
sum_of_tuples_for_1=0
for key,val in inputlist.items():
for k1,v1 in val.items():
if k1==0:
for j1,j2 in v1:
sum_of_tuples_for_0+=j1
else :
for j1,j2 in v1:
sum_of_tuples_for_1+=j1
sum_result[0]=sum_of_tuples_for_0
sum_result[1]=sum_of_tuples_for_1
print(sum_result)
答案 3 :(得分:1)
解决它只使用索引。
inputlist = {1: {0: [(5.0, 3.6), (20.0, 0.0)],
1: [(4.0, 0.0), (22.0, 0.0)]},
2: {0: [(2.0, 0.5), (21.0, 0.5)],
1: [(5.0, 0.0), (22.0, 0.0)]
}
}
sum_result_0 = {}
sum_result = {}
for i in inputlist.items():
if i[0] == 1:
sum_result_0[0] = i[1][0][0][0] + i[1][0][1][0]
sum_result_0[1] = i[1][1][0][0] + i[1][1][1][0]
if i[0] == 2:
sum_result[0] = i[1][0][0][0] + i[1][0][1][0]
sum_result[1] = i[1][1][0][0] + i[1][1][1][0]
sum_result = {0: sum_result[0] + sum_result_0[0], 1: sum_result[1] + sum_result_0[1]}
print(sum_result)
答案 4 :(得分:1)
你可以试试这个:
sum_result=dict.fromkeys(range(2),0)
for v in inputlist.values():
for k,i in v.items():
sum_result[k] += i[0][0] + i[1][0]
print(sum_result)
或者这个
sum_result=dict.fromkeys(range(2),0)
for v in inputlist.values():
sum_result[0] += v[0][0][0] + v[0][1][0]
sum_result[1] += v[1][0][0] + v[1][1][0]
print(sum_result)