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

Python作业:如何将letter_positions函数的列表值转为集合?

解决方法:将字典值从列表改为集合

你的代码逻辑没问题,只是存储结构用了列表而非集合,两种简单修改方式就能满足需求:

方式1:直接用集合存储(推荐)

初始化字母对应的容器时直接用集合,用add()方法添加位置(集合没有append()方法),一步到位符合要求:

def letter_positions(n):
    answer = {}
    n = n.lower()
    x = 0
    for letter in n:
        if letter.isalpha():
            if letter not in answer:
                answer[letter] = set()  # 初始化集合而非列表
            answer[letter].add(x)  # 用add()添加元素到集合
        x += 1
    return answer

调用后positions['e']会直接返回你需要的集合格式{4, 5, 8, 14, 16, 43, 67, 83, 88, 89, 97, 121, 122, 141, 142}。

方式2:将现有列表转为集合(快速修改现有代码)

如果不想改动循环内的逻辑,可在函数返回前把字典里的所有列表批量转成集合:

def letter_positions(n):
    answer = {}
    n = n.lower()
    x = 0
    for letter in n:
        if letter.isalpha():
            if letter not in answer:
                answer[letter] = []
            answer[letter].append(x)
        x += 1
    # 用字典推导式把所有列表转为集合
    return {k: set(v) for k, v in answer.items()}

两种方法都能达到作业要求,第一种更高效,无需额外转换步骤;第二种适合快速调整现有代码。你的核心实现逻辑没有错误,只是存储结构不符合要求而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:45:32