如何检查输入用户列表是否存在于多账户组并输出正确结果?
问题分析与解决
你的代码核心问题是:accounts里存的是账户名字符串,但循环时直接用字符串做in判断,这是在检查字符是否属于字符串,而非用户是否在对应的用户列表中。比如"Bob" in "Microsoft"会返回True(因为字符'b'存在于"Microsoft"里),这就导致了错误的输出。
修正方案
改用字典来存储账户与用户列表的映射关系,这样就能通过账户名字符串直接获取对应的用户列表,再进行存在性判断。
修正后的代码
users_inputted = ['Bob', 'Joe', 'Mary'] # 用字典存储账户和对应的用户列表 accounts = { 'Nike': ['John', 'Mary', 'Bob'], 'Apple': ['Bob', 'Joe', 'Mark'], 'Microsoft': ['Jack', 'Bob', 'Mary'] } for person in users_inputted: # 遍历字典的键(账户名)和值(用户列表) for group_name, group_users in accounts.items(): if person in group_users: print(f"The User {person} is in {group_name}") else: print(f"The User {person} is not in {group_name}")
输出结果
The User Bob is in Nike The User Bob is in Apple The User Bob is in Microsoft The User Joe is not in Nike The User Joe is in Apple The User Joe is not in Microsoft The User Mary is in Nike The User Mary is not in Apple The User Mary is in Microsoft
关键修改点
- 将分散的
Nike、Apple、Microsoft列表整合进字典,建立账户名到用户列表的直接映射。 - 循环时通过
accounts.items()同时获取账户名和对应的用户列表,确保判断的是用户是否在目标用户列表中,而非字符是否在字符串中。
内容的提问来源于stack exchange,提问作者Mr. Jett
相关产品推荐
相关产品推荐

