[英]Split list by sum of sublist items
我有一个包含文件名和大小的子列表列表。 我需要根据每个拆分的子列表的总文件大小必须小于 500 000 000 字节的标准将该列表拆分为子列表。 我尝试了多种解决方案,但我找不到让它工作的方法。 我的最后一次尝试是这样的:
import functools
import operator
data = [["c:\example_path", 480000],["c:\example_path2", 500000], ...]
list_final = []
sum = 0
list_items_subset = []
for index, item in enumerate(data):
sum += item[1]
if sum < 500000000:
list_items_subset.append(item[0])
else:
list_final.append(list_items_subset)
sum = 0
list_items_subset = []
list_items_subset.append(item[0])
sum += item[1]
print("len data init: ", len(data))
print("len items final: ", len(functools.reduce(operator.iconcat, list_final, [])))
list_final
应该存储累积总和小于 500 000 000 字节的所有文件子列表。 在上面的代码中,虽然创建和插入了子列表,但我留下了不包含在任何地方的项目。
感谢您的任何建议!
这是你想要得到的吗?
import functools
import operator
data = [[r"c:\example_path", 480000], [r"c:\example_path2", 500000]] * 10000
list_final = []
total_size = 0
list_items_subset = []
for name, size in data:
total_size += size
if total_size < 500000000:
list_items_subset.append(name)
else:
list_final.append(list_items_subset)
total_size = 0
list_items_subset = [name]
total_size += size
list_final.append(list_items_subset)
print("len data init: ", len(data))
print(len(list_final))
print("len items final: ", len(functools.reduce(operator.iconcat, list_final, [])))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.