A = ['1','1','1','3','3','4']
B = ['5','9','3','4','8','1']
当列表 A 中的值发生变化时,例如从 1 变为 3。求列表 B 中值集的总和,例如 (5,9,3) 的总和。列表 A 和 B 的大小相同。
在列表 A = ['1','1','1','3','3','4']
SEARCH - 1)值从 1 变为 3,2 )值从 3 变为 4 .在列表 B = ['5','9','3','4','8','1']
结果 - 1)只求和 5+9+3,2 )只求和 4+8。
有没有办法做到这一点?因为我想不出一个合乎逻辑的方法来解决它。
我的代码开始:
A = ['1','1','1','3','3','4']
B = ['5','9','3','4','8','1']
C=[int(value) for value in A]
print(C)
for i in C:
if C[:-i] == C[:i]:
这将查看 A 的每个邻居值,看看它们是否相同,但我不知道如何将其与列表 B 的值相关联。
既然我明白列表A
本身不会改变,但你表达了改变的想法,意味着列表具有不同的相邻元素的分区,然后想到了不同的解决方案:
鉴于您的原始数据:
A = ['1','1','1','3','3','4']
B = ['5','9','3','4','8','1']
我们可以使用 adefaultdict
对这些数据进行分组:
from collections import defaultdict
D = defaultdict(list)
for a, b in zip(A,B):
D[a].append(int(b))
只是为了展示我们收集的内容:
for a, b in D.items():
print(a,b)
>> 1 [5, 9, 3]
>> 3 [4, 8]
>> 4 [1]
现在我们可以计算一些总和:
result = [sum(b) for a,b in D.items()]
print(result)
>> [17, 12, 1]
注意事项defaultdict
:
创建实例时:
D = defaultdict(list)
这将创建一个defaultdict
which,当它遇到新键时将创建参数的一个实例。在这种情况下,它会创建一个新的list
所以每一行:
D[a].append(int(b))
当a
是一个D
以前没有见过的键时,list
会创建一个新的键,它被返回,应用到它.append(....
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句