You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何统计列表中仅包含数字的ID数量?

统计仅含数字的ID数量:无需转字典,直接处理更高效

你完全不需要把整个列表转换成字典来实现这个需求——直接遍历每个字符串,提取ID并判断是否全为数字,是更简单高效的做法。毕竟我们只关心ID这一个字段,没必要处理所有键值对,转字典反而会增加不必要的开销(比如处理重复键的覆盖问题)。

具体实现步骤

  1. 遍历列表中的每一条记录;
  2. 把每条记录按空格分割成键值对(注意先去掉记录开头的空格);
  3. 找到以ID:开头的键值对,提取冒号后的ID值;
  4. 判断该ID值是否全为数字,若是则计数加1;
  5. 因为每条记录只有一个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:59:32