【发布时间】:2020-11-29 19:21:45
【问题描述】:
我正在使用 Python。
将整数添加到字典中的字典值会添加到字典中的所有字典。
def addQty(req_data, Cat):
for item in req_data:
state = item.get("state")
sub_cat = item.get("sub_category")
qty = item.get("quantity")
if state in Cat:
Cat[state][sub_cat] += int(qty)
print(Cat)
代码添加到字典中的所有字典。
字典 Cat 是使用以下方法创建的:
def state_and_subcat(State, Subcat):
Cat = State.copy()
for state in StateSubCat:
Cat[state] = Subcat
return Cat
State 使用 {"state": state, "sub_category": subcat, "quantity": qty} 构建的位置
使用 deepcopy 代替 .copy() 似乎不能解决问题。
Cat 的一个例子是
{ “阿拉巴马州”:{ “配件”:2976, “家电”:1729, “艺术”:3000, “粘合剂”:5974, “书柜”:868, “椅子”:2356, “复印机”:234, “信封”:906, “紧固件”:914, “家具”:3563, “标签”:1400, “机器”:440, “纸”:5178, “电话”:3289, “存储”:3158, “供应”:647, “表”:1241 }, “亚利桑那”:{ “配件”:2976, “家电”:1729, “艺术”:3000, “粘合剂”:5974, “书柜”:868, “椅子”:2356, “复印机”:234, “信封”:906, “紧固件”:914, “家具”:3563, “标签”:1400, “机器”:440, “纸”:5178, “电话”:3289, “存储”:3158, “供应”:647, “表”:1241 }, “阿肯色州”:{ “配件”:2976, “家电”:1729, “艺术”:3000, “粘合剂”:5974, “书柜”:868, “椅子”:2356, “复印机”:234, “信封”:906, “紧固件”:914, “家具”:3563, “标签”:1400, “机器”:440, “纸”:5178, “电话”:3289, “存储”:3158, “供应”:647, “表”:1241 }, “加利福尼亚”:{ “配件”:2976, “家电”:1729, “艺术”:3000, “粘合剂”:5974, “书柜”:868, “椅子”:2356, “复印机”:234, “信封”:906, “紧固件”:914, “家具”:3563, “标签”:1400, “机器”:440, “纸”:5178, “电话”:3289, “存储”:3158, “供应”:647, “表”:1241 }
req_data 的一个例子是:
{ “数量”:“7”, “州”:“亚利桑那州”, “子类别”:“存储” }, { “数量”:“2”, “州”:“加利福尼亚”, "sub_category": "椅子" }, { “数量”:“3”, “州”:“加利福尼亚”, "sub_category": "家具" }, { “数量”:“5”, “州”:“俄亥俄州”, "sub_category": "电话" }, { “数量”:“2”, “州”:“俄亥俄州”, “子类别”:“纸” }, { “数量”:“9”, “州”:“俄亥俄州”, "sub_category": "紧固件" }, { “数量”:“3”, “州”:“加利福尼亚”, “子类别”:“纸” }, { “数量”:“1”, “州”:“加利福尼亚”, “子类别”:“纸” }, { “数量”:“4”, “州”:“加利福尼亚”, “子类别”:“艺术” }, { “数量”:“2”, “州”:“加利福尼亚”, "sub_category": "紧固件" }, { “数量”:“3”, “州”:“加利福尼亚”, "sub_category": "活页夹" }, { “数量”:“6”, “州”:“加利福尼亚”, "sub_category": "供应品" }, { “数量”:“14”, “州”:“加利福尼亚”, "sub_category": "家具" }, { “数量”:“2”, “州”:“宾夕法尼亚州”, "sub_category": "家具" }, { “数量”:“3”, “州”:“加利福尼亚”, “子类别”:“艺术” }
如何将特定的qty 添加到state 中的sub_cat,而不是添加到所有states?
【问题讨论】:
-
看来问题出在生成
Cat的代码中,因为您对addQty的实现应该没问题。 -
欢迎来到 SO!如果您还没有,请查看tour。如需调试帮助,请提供minimal reproducible example。在这种情况下,看起来问题甚至不在于您发布的代码,而在于您创建
Cat的方式。看起来所有子字典都是同一个对象,而不是副本。
标签: python python-3.x dictionary