下面的问题可能有点混乱,但我会尽量用最好的方式来解释。
假设我们在一家制造公司工作它生产零部件,然后用于制造产品在下面的示例中,有3个组件和2个最终产品。
组件和产品的需求如下:
comp1 = 8
comp2 = 3
comp3 = 5
prod1 = 2
prod2 = 2
可以保存在字典中:
clst = {"comp": [comp1, comp2, comp3], "prod": [prod1, prod2]}
另一方面,为了制造最终产品,部件要求如下:
产品需求:2个组件1,1个组件2,1个组件3
产品2需要:3个组件1、1个组件2、2个组件3
在字典里:
rprod = {0: [2,1,1], 1: [3,1,2]}
我需要创建一个列表,其中包含按以下方式混合数据的材料的贡献和消耗列表:
[
[
[1, 1, 1, 1, 1, 1, 1, 1, -2], # ---->comp1/prod1(1)
[1, 1, 1, -1], # ---->comp2/prod1(1)
[1, 1, 1, 1, 1, -1] # ---->comp3/prod1(1)
]
,
[
[1, 1, 1, 1, 1, 1, 1, 1, -2], # ---->comp1/prod1(2)
[1, 1, 1, -1], # ---->comp2/prod1(2)
[1, 1, 1, 1, 1, -1] # ---->comp3/prod1(2)
]
,
[
[1, 1, 1, 1, 1, 1, 1, 1, -3], # ---->comp1/prod2(1)
[1, 1, 1, -1], # ---->comp2/prod2(1)
[1, 1, 1, 1, 1, -2] # ---->comp3/prod3(1)
]
,
[
[1, 1, 1, 1, 1, 1, 1, 1, -3], # ---->comp1/prod2(2)
[1, 1, 1, -1], # ---->comp2/prod2(2)
[1, 1, 1, 1, 1, -2] # ---->comp3/prod3(2)
]
]
列表中1的数量对应于组件的需求量,负数的最后一个数字是产品组件的需求量。
有什么建议吗?
最佳答案
下面是代码的可读格式:
rprod = {0: [2,1,1], 1: [3,1,2]}
clst = {"comp": [8, 3, 5], "prod": [2, 2]}
lst = []
for i, prod_demand in enumerate(clst["prod"]):
sub_list = []
for j, comp_demand in enumerate(clst["comp"]):
sub_list.append([1]*comp_demand+[rprod[i][j]*(-1)])
for k in range(prod_demand):
lst.append(sub_list)
但如果你想浓缩它,你可以写:
rprod = {0: [2,1,1], 1: [3,1,2]}
clst = {"comp": [8, 3, 5], "prod": [2, 2]}
lst = []
for i, p in enumerate(clst["prod"]):
lst += [[[1]*c+[rprod[i][j]*(-1)] for j, c in enumerate(clst["comp"])]]*p
关于python - Python自动化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50808650/