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

Python函数groups_per_user报错AttributeError,请求排查解决

问题排查:AttributeError: 'str' object has no attribute 'append'

问题背景

需要实现groups_per_user函数,该函数接收一个存储组名与对应用户列表的字典,返回以用户为键、所属组列表为值的字典。运行代码时触发如下错误:

Error on line 17:
    "administrator": ["admin"] }))Error on line 8:
    user_groups[users].append(groups)
AttributeError: 'str' object has no attribute 'append'

用户编写的代码:

def groups_per_user(group_dictionary):
    user_groups = {}
    for groups, user in group_dictionary.items():
        for users in user:
            if users in user_groups:
                user_groups[users].append(groups)
            else:
                user_groups[users] = groups


    return(user_groups)

print(groups_per_user({"local": ["admin", "userA"],
        "public":  ["admin", "userB"],
        "administrator": ["admin"] }))

错误原因

问题出在代码的else分支:

else:
    user_groups[users] = groups

这里直接将字符串类型的groups赋值给了user_groups[users],而不是创建一个包含该组的列表。当后续再次遇到同一个用户(比如示例中的admin),代码会尝试对字符串调用append方法,而字符串没有这个方法,因此触发AttributeError。

修正后的代码

将else分支的赋值改为列表形式即可:

def groups_per_user(group_dictionary):
    user_groups = {}
    for groups, users_list in group_dictionary.items():
        for user in users_list:
            if user in user_groups:
                user_groups[user].append(groups)
            else:
                # 初始化为包含当前组的列表
                user_groups[user] = [groups]
    return user_groups

print(groups_per_user({"local": ["admin", "userA"],
        "public":  ["admin", "userB"],
        "administrator": ["admin"] }))

运行结果

执行修正后的代码,会输出预期结果:

{'admin': ['local', 'public', 'administrator'], 'userA': ['local'], 'userB': ['public']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39