您将如何平均分配每个都有值的子列表列表?
我想将以下列表分成 3 个列表。
lst = [['a',10],['b',40],['c',10],['d',30],['e',20],['f',100],['g',90],['h',4]]
由于所有值的总和为 304,因此三个列表应聚合到大约 101.3。
这是我想以某种形式产生的结果。
lst1 = [['g',90],['a',10]]
lst2 = [['f',100],['h',4]]
lst3 = [['b',40],['c',10],['d',30],['e',20]]
这是我迄今为止解决的解决方案,但需要一些工作以使其更快。
def ListSum(lst):
lst = map(lambda subli: subli[1],lst)
return sum(lst)
def EvenlyDistribute(lst):
#put into bucket until reached, then move to the next bucket
Lst1 = []
Lst2 = []
Lst3 = []
for subli in lst:
try:
if ListSum(Lst1) < 100:
Lst1.append(subli)
elif ListSum(Lst2) < 100:
Lst2.append(subli)
else:
Lst3.append(subli)
except:
pass
print Lst1
print Lst2
print Lst3