能否在Python函数中使用多循环?Openpyxl统计代码优化求助
优化Openpyxl多单词统计的代码方案
你当前的代码能实现单一单词的统计,但重复复制代码效率太低,完全可以通过封装函数和批量配置来解决问题,以下是具体方案:
原代码回顾
word = 0 for i in ws["B"]: if i.value == "word": word += 1 ws["M2"] = word
封装通用统计函数
把统计逻辑封装成函数,传入工作表对象、要搜索的列、目标单词、结果写入单元格这几个参数,就能重复调用:
def count_word(ws, search_col, target_word, result_cell): count = 0 for cell in ws[search_col]: if cell.value == target_word: count += 1 ws[result_cell] = count
调用示例
比如要统计B列中"apple"写入M2,"banana"写入N2,直接调用函数即可:
count_word(ws, "B", "apple", "M2") count_word(ws, "B", "banana", "N2")
用字典实现批量统计
如果你有大量单词和对应结果单元格需要处理,可以用字典配置映射关系,循环调用函数,避免重复写调用语句:
# 定义字典:键是要搜索的单词,值是结果单元格 word_cell_map = { "apple": "M2", "banana": "N2", "orange": "O2" } # 循环字典批量处理 for word, cell in word_cell_map.items(): count_word(ws, "B", word, cell)
关于函数中使用多个for循环
完全可以在def定义的函数里放入多个for循环,只要逻辑符合你的需求。比如如果需要同时统计多列的同一个单词,就可以在函数里嵌套或并列多个循环。不过更推荐把单一职责的逻辑封装成小函数,再组合使用,这样代码更易读、易维护。
内容的提问来源于stack exchange,提问作者Dozo
相关产品推荐
相关产品推荐

