i have two dictionary , i want split my product dictionary to lists base on the following conditions :
product = {
'k1': 30.99999999999994,
'k2': 400.0,
'k3': 50.0,
'k4': 400.00000000000006,
'k5': 400.0,
'k6': 50.0,
'k7': 60.0,
'k8': 300.0,
'k9': 40.0}
types = {
'k1': 2,
'k2': 1,
'k3': 1,
'k4': 1,
'k5': 1,
'k6': 1,
'k7': 1,
'k8': 1,
'k9': 2}
- 1 - if a product has value less that 200 should join the other products while new list of products has value less than 600
- 2 - product with different types can't join
i have written the following code but it has a bug on last index of dictionary and i get false results every time.
k = list(product.keys())
ProductValue = []
ProductName = []
for idx, name in enumerate(k):
value = product[name]
if idx == 0:
temp1 = [value]
temp2 = [name]
continue
if idx == len(k) - 1:
ProductValue.append(temp1)
ProductName.append(temp2)
continue
if value < 200 or product[k[idx - 1]] < 200:
sec1 = types[k[idx - 1]]
sec2 = types[k[idx]]
if ((sum(temp1) + value) > 600) or (sec1 != sec2):
ProductValue.append(temp1)
ProductName.append(temp2)
temp1 = [value]
temp2 = [name]
continue
else:
temp1.append(value)
temp2.append(name)
else:
ProductValue.append(temp1)
ProductName.append(temp2)
temp1 = [value]
temp2 = [name]
what i get from this code is :
ProductValue = [[30.99999999999994], [400.0, 50.0], [400.00000000000006], [400.0, 50.0, 60.0], [300.0]]
ProductName = [['k1'], ['k2', 'k3'], ['k4'], ['k5', 'k6', 'k7'], ['k8']]
which is missing the last product that has value of 40. i tried fixing my code but i made it worse