我有一个大型数据表,我已将其拆分为单独的列表,例如:(lists virticle)
A=[1,1,2,2,3,3,3]
B=[6,3,5,3,8,4,3]
我想要实现的是 2 个新列表,其中列表 A 被压缩为非重复值,并且重复值出现在 A 中,B 的新对应值是添加对应于该值的元素,因为例如,我希望这两个新列表是:
C=[1,2,3]
D=[9,8,15]
我想将其扩展到列表中的大量数据,我该如何实现?
最佳答案
import itertools
import operator
import collections
A=[1,1,2,2,3,3,3]
B=[6,3,5,3,8,4,3]
d = collections.OrderedDict()
for key, group in itertools.groupby(zip(A, B), key=operator.itemgetter(0)):
d[key] = sum(map(operator.itemgetter(1), group))
C = d.keys() # [1, 2, 3]
D = d.values() # [9, 8, 15]
在一行中使用列表理解,
d = collections.OrderedDict({key : sum(map(operator.itemgetter(1), group))
for key, group in itertools.groupby(zip(A, B), key=operator.itemgetter(0))})
关于Python:如何检测列表中的重复项以发出不同操作的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397921/