Python:如何统计列表中仅包含数字的ID数量?
统计仅含数字的ID数量:无需转字典,直接处理更高效
你完全不需要把整个列表转换成字典来实现这个需求——直接遍历每个字符串,提取ID并判断是否全为数字,是更简单高效的做法。毕竟我们只关心ID这一个字段,没必要处理所有键值对,转字典反而会增加不必要的开销(比如处理重复键的覆盖问题)。
具体实现步骤
- 遍历列表中的每一条记录;
- 把每条记录按空格分割成键值对(注意先去掉记录开头的空格);
- 找到以
ID:开头的键值对,提取冒号后的ID值; - 判断该ID值是否全为数字,若是则计数加1;
- 因为每条记录只有一个ID,找到后就可以跳出当前循环,提升效率。
代码示例
data = ['ID:123 GE:m FN:Amir LN:Maleki MN:0400101010 EM:a@b.c ST:VIC', ' ID:b22 EM:b@d.c ST:VIC GE:F FN:Miniyi LN:Li MN:0430101210 MN:0432101215', ' ID:153 GE:m FN:John LN:Liu MN:040181010 ST:NSW EM:d@b.c'] numeric_id_count = 0 for entry in data: # 去除开头空格后分割成键值对列表 key_value_pairs = entry.strip().split() for pair in key_value_pairs: if pair.startswith('ID:'): # 提取ID值(去掉"ID:"前缀) id_value = pair[3:] # 判断是否全为数字 if id_value.isdigit(): numeric_id_count += 1 break # 找到ID后直接跳出循环,不用继续遍历其他键值对 print(numeric_id_count) # 输出结果:2
为什么不用字典?
- 转字典需要处理所有键值对,但我们只需要
ID字段,属于做了多余的工作; - 部分记录存在重复键(比如第二条记录有两个
MN),转字典时后面的值会覆盖前面的,虽然不影响ID的提取,但完全没必要处理这种情况; - 直接提取ID的代码更简洁,执行效率也更高。
内容的提问来源于stack exchange,提问作者KenjiChan1212
相关产品推荐
相关产品推荐

