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

Python字典Username条目查找函数TypeError报错问题求助

修复TypeError:string indices must be integers问题

问题根源

你猜的完全没错!这个错误的核心就是reviewers_dicts的结构和你的代码逻辑不匹配。你的代码默认要遍历多个用户条目,但实际reviewers_dicts是单个用户的属性字典——它的键是'Username'、'DOB'这类属性名,对应的值都是字符串或列表。当你用for k, entry in reviewers_dicts.items()循环时,entry拿到的是像'yuoc2324'这样的字符串,自然不能用entry['Username']来索引(字符串只能用整数下标,比如entry[0])。

修复方案

根据你要查找指定用户名对应完整条目的需求,我们分两种场景来修复:


场景1:需要存储多个用户信息

首先调整reviewers_dicts为字典嵌套字典的结构,外层用唯一标识(比如用户ID或用户名)作为键,内层是每个用户的完整属性:

# 示例:可存储多个用户的结构
reviewers_dicts = {
    'u001': {'Username': 'yuoc2324', 'DOB': '02.08.1975', 'State': 'South Dakota', 'Reviewed': []},
    'u002': {'Username': 'KKYSD', 'DOB': '10.15.1988', 'State': 'Texas', 'Reviewed': ['MovieA', 'MovieB']}
}

然后修改函数,遍历每个用户的属性字典进行匹配:

def find_user():
    value = input('Input Username: ')
    # 遍历所有用户的属性字典
    for entry in reviewers_dicts.values():
        if value == entry['Username']:
            return entry  # 返回匹配到的完整用户条目
    # 未找到时返回提示
    return f"Username '{value}' not found"

print(find_user())

场景2:只需要处理单个用户

如果你的场景里只有一个用户,完全不需要循环,直接判断即可:

reviewers_dicts = {'Username': 'yuoc2324', 'DOB': '02.08.1975', 'State': 'South Dakota', 'Reviewed': []}

def find_user():
    value = input('Input Username: ')
    if value == reviewers_dicts['Username']:
        return reviewers_dicts
    return f"Username '{value}' not found"

print(find_user())

测试验证

用第一个方案输入KKYSD,会返回对应的完整用户条目;输入不存在的用户名则返回提示信息,不会再触发TypeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:14:08