import pandas as pd df = pd.read_excel('STOCKS.XLSX') dic1 = {'44671': {'S': 500, 'M': 700, 'L': 800, 'XL': 700, '2XL': 500}} dic2 = {'2128': {'S': 300, 'M': 300, 'L': 500, 'XL': 300, '2XL': 300}} dic_list=[dic1,dic2] for d in range(1,3): for kh, stock in dic[d].items(): for size, qty in stock.items(): for i in range(len(df)): if str(kh) == str(df.at[i, '款号']) and str(size) == str(df.at[i, '尺码']): if df.at[i, '库存数'] < qty: df.at[i, '下单数量'] = qty - df.at[i, '库存数'] else: df.at[i, '下单数量'] = 0 print(df)
时间: 2024-01-29 20:02:54 浏览: 224
非常抱歉,我之前的回答中有一处错误。在修改后的代码中,我将字典`dic1`和`dic2`放入一个列表`dic_list`中,并进行迭代处理。以下是修改后的代码:
```python
import pandas as pd
df = pd.read_excel('STOCKS.XLSX')
dic1 = {'44671': {'S': 500, 'M': 700, 'L': 800, 'XL': 700, '2XL': 500}}
dic2 = {'2128': {'S': 300, 'M': 300, 'L': 500, 'XL': 300, '2XL': 300}}
dic_list = [dic1, dic2]
for dic in dic_list:
for kh, stock in dic.items():
for size, qty in stock.items():
for i in range(len(df)):
if str(kh) == str(df.at[i, '款号']) and str(size) == str(df.at[i, '尺码']):
if df.at[i, '库存数'] < qty:
df.at[i, '下单数量'] = qty - df.at[i, '库存数']
else:
df.at[i, '下单数量'] = 0
print(df)
```
在这段修改后的代码中,我通过将字典`dic1`和`dic2`放入列表`dic_list`中,然后使用`for`循环迭代处理每个字典。这样可以避免直接使用数字索引来访问字典,使代码更加清晰和易读。
如果您有任何其他问题,请随时提问。
阅读全文