Моя цель - подсчет предложений указанным компаниям в Excel.Неверный подсчет при использовании словаря, заменяющего оператор multip-if
Я использовал множество утверждений if, чтобы делать подсчет работы раньше. коды, как ниже
ipl=gs=gt=0
for file in glob.glob('*.xlsm'):
wb=load_workbook(file,data_only=True)
ws=wb["Tim"]
client=ws['B2'].value
if client=='Injection Parts Ltd.':
ipl+=1
if client=='Gulf Sample Ltd':
gs+=1
if client=='Great test Ltd.':
gt+=1
Выше работал.
Учитывая есть более чем 20, если statments и это занимает много времени, периода, чтобы закончить проверку, я использовал словарь, как показано ниже
ipl=gs=gt=0
for file in glob.glob('*.xlsm'):
wb=load_workbook(file,data_only=True)
ws=wb["Tim"]
client=ws['B2'].value
companypool = {'Injection Parts Ltd.':ipl,
'Gulf Sample Ltd':gs,
'Great test Ltd.':gt}
if client in companypool:
print(companypool[client])
print(client)
companypool[client]+=1
В результате companypool [клиент] всегда быть 0 и не сосчитать ,
Какие-либо коды не так?
Я новичок в Python, благодарю вас заранее.
Привет 101, спасибо за быстрый ответ. проблема с отступом вызвана paste.sorry.Наше второе предложение разрешило мою проблему наполовину. Оно меняет значения словаря на 0 на каждую итерацию. Фактически мне все еще нужен ipl, gs, gt как variate, потому что я должен вводить эти переменные в ячейку excel . Если я определяю их как ноль, мне сложно управлять ими в будущих кодах. Я сохранил их, но нашел ipl, gs, gt всегда равным 0, а не ценности companypool [client]. –
Я добавил переменные в конце, надеюсь, что это поможет. – 101
Отлично. Это сработало! Спасибо. Я нашел, что результат тот же. (Метод multi-if и dictionary). Я видел сообщение ниже, но, похоже, не улучшает производительность. Http: //stackoverflow.com/questions/17166074/most-efficient-way-of -Изготовление-ан-если-Элиф-Элиф-еще-заявление, когда-The-то еще-это-дон –