Python函数追加列表值错误且无法适配任意用户部门如何解决
问题原因
- 部门匹配逻辑错误:你没有关联当前遍历的部门和用户的所属关系,而是每次都硬编码判断用户是否在
local/public/administrator三个固定部门里。admin用户本身就属于local部门,所以每次循环到admin(总共三次,分别对应local、public、administrator三个部门的用户列表)时,第一个if判断永远成立,只会追加local字符串,导致最终出现三个重复的local。 - 硬编码逻辑限制扩展性:提前固定了三个用户的键,也固定了三个部门的判断逻辑,只要输入里有新的用户或者部门,代码就会报错或者逻辑失效。
修复方案
直接遍历「部门-用户列表」的键值对,遇到用户不存在时先在结果字典里初始化空列表,再把当前部门追加到对应用户的部门列表里即可,适配任意输入:
def groups_per_user(group_dictionary): user_groups = {} # 遍历每个部门和对应的用户列表 for dept, users in group_dictionary.items(): for user in users: # 用户不存在就先初始化空列表 if user not in user_groups: user_groups[user] = [] # 把当前部门加入用户的所属部门列表 user_groups[user].append(dept) 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,提问作者hmood
相关产品推荐
相关产品推荐

