我是库存经理,我的库存如下
oldstock = {"A":100,"B":120,"C":150,"D":100,"E":230,"F":200,"G":180,"H":140,"I":90,"J":50}
但是,我从下面的每个箱子中出售了一些物品(似乎字典的表述是最好的表示方式)
sale = [{"A":20},{"C":25},{"E":15},{"F":18},{"H":20},{"C":35},{"A":40},{"A":5},{"E":40},{"H":20}]
每箱销售完成后如何计算新库存?
更干净,易于理解的方法将是这样的:
for item in sale:
for k, v in item.items():
# an extra check, you can remove this if you know for sure that sale will never have any key which is not in oldstock
if k in oldstock:
oldstock[k] = oldstock[k] - v
print(oldstock)
# {'A': 35, 'B': 120, 'C': 90, 'D': 100, 'E': 175, 'F': 182, 'G': 180, 'H': 100, 'I': 90, 'J': 50}
希望这会有所帮助。祝你好运。
我已经尝试过以下方法,但是看起来太复杂了,难以理解(就像他们说的那样,简单胜于复杂)
oldstock = {"A":100,"B":120,"C":150,"D":100,"E":230,"F":200,"G":180,"H":140,"I":90,"J":50}
sale = [{"A":20},{"C":25},{"E":15},{"F":18},{"H":20},{"C":35},{"A":40},{"A":5},{"E":40},{"H":20}]
for item in sale:
oldstock[list(item.keys())[0]] = oldstock.get(list(item.keys())[0], 0) - list(item.values())[0]
print(oldstock)
如果您有更好的答案,我不介意多学一点。同时,我可以自由重组旧库存和销售对象
如果您可以重组数据(如your answer中所述,则存储销售的一种简单方法是使用元组而不是字典。
sale = [('A', 20), ('C', 25), ('E', 15), ('F', 18), ('H', 20), ('C', 35), ('A', 40), ('A', 5), ('E', 40), ('H', 20)]
然后使用
for item, sale_val in sale:
oldstock[item] -= sale_val