Python2.6.6环境下统计XML解析输出的SSID词频方法求助
实现方案
核心思路
无需硬编码过滤词,用普通字典即可完成词频统计:遍历所有SSID文本时,每拿到一个值就更新字典的计数,不存在就默认初始化为0再加1,最后对字典按计数值降序排序输出即可,完全适配Python2.6版本的语法特性。
修改后可直接运行的代码
from xml.etree import ElementTree as ET root = ET.fromstring(response.text) data = root.findall('file.xml') # 初始化空字典存储统计结果 count_dict = {} for i in data: ssid = i.find('file.xml/ssidname').text # 如需过滤空值/无效SSID可保留该判断,无需的话直接删除即可 if ssid: count_dict[ssid] = count_dict.get(ssid, 0) + 1 # 按计数降序排序,计数相同则按SSID名称升序排列 sorted_items = sorted(count_dict.items(), key=lambda x: (-x[1], x[0])) # 格式化输出匹配预期格式 output_arr = [] for ssid, cnt in sorted_items: output_arr.append("%s: %d" % (ssid, cnt)) print ", ".join(output_arr)
方案说明
- 用字典的
get方法做兼容处理:如果key不存在就返回默认值0,无需提前判断key是否在字典中,所有出现的SSID都会自动纳入统计,不需要提前写死任何过滤规则 - 排序逻辑通过
sorted函数配合lambda表达式实现,-x[1]表示按计数倒序排列,符合高频在前的需求 - 全程使用Python2.6原生语法,无需引入任何额外第三方依赖,也不用升级Python版本
内容的提问来源于stack exchange,提问作者jamreg
相关产品推荐
相关产品推荐

