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

构建以字符位置为键、对应0出现次数为值的字典:代码错误排查

问题分析与解决方案

你的代码主要有两个核心问题,导致输出不符合预期:

1. 位置计数器ctr没有在每个单词循环前重置

你把ctr=1放在了整个循环外面,处理完第一个单词后ctr会持续累加,处理第二个单词时位置会从8开始(而非重新从1计数),完全打乱了字符和位置的对应关系。

2. 未初始化所有位置的默认计数为0

你的代码只统计了出现过0的位置,那些没有0的位置(比如例子里的5、6、7位)不会被加入字典,自然无法显示5:0这类结果。

修正后的代码

我们可以用enumerate直接获取每个字符的位置(设置从1开始计数,匹配你的需求),先初始化好所有位置的默认值为0,再逐个统计:

string_list = ["0000NNN", "000ANNN"]
# 假设所有字符串长度一致,先获取长度
str_length = len(string_list[0])
# 初始化字典,位置从1到str_length,默认值0
my_dict = {pos: 0 for pos in range(1, str_length + 1)}

for word in string_list:
    # 用enumerate获取从1开始的位置和对应字符
    for pos, letter in enumerate(word, start=1):
        if letter == "0":
            my_dict[pos] += 1

print(my_dict)

测试结果

运行这段代码后,输出完全符合你的预期:
{1: 2, 2: 2, 3: 2, 4: 1, 5: 0, 6: 0, 7: 0}

额外说明

如果你的字符串列表里存在不同长度的字符串,可以先确认最长长度,再基于最长长度初始化字典;或者根据需求只统计到最短字符串的长度,按需调整即可。从你的例子来看,所有字符串长度一致,上面的代码就足够啦。

内容的提问来源于stack exchange,提问作者Cyber_Tron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:03:12