首页 > 解决方案 > 如何比较一个字符串是否在列表中,并在lower()中读取该列表中的每个项目?

问题描述

我想查看用户列表中是否已经存在新用户名,但是对于现有用户也可以评估用户lower()功能。

我已经尝试过这个:

for nuser in new_users:
        if nuser.lower() not in users.lower():

但它不喜欢users.lower()

我也尝试将我的更改nuser.lower()nuser.title(),但这不是未来的证明,因为我并非所有用户都会以title()格式书写。

我的整个代码如下:

users = ['John', 'Kyle', 'Lily', 'admin', 'Tom']
new_users = ['john', 'Mike', 'TOM', 'Daemon']

if new_users:
    for nuser in new_users:
        if nuser.lower() not in users.lower():
            print("Username: "+nuser+" is available.")
        else:
            print("Username: "+nuser+" is not available, you will have to choose another.")

例如,我希望 TOM 和 Tom 发生冲突并打印出用户名不可用。

非常感谢!

标签: python

解决方案


users = ['John', 'Kyle', 'Lily', 'admin', 'Tom']
new_users = ['john', 'Mike', 'TOM', 'Daemon']

if new_users:
    users_lower = set(map(str.lower, users))
    for nuser in new_users:
        if nuser.lower() not in users_lower:
            print("Username: "+nuser+" is available.")
        else:
            print("Username: "+nuser+" is not available, you will have to choose another.")

users是一个没有属性lower的列表 - 你必须降低你自己的列表元素并使用一个集合来快速查找(element in some_list比慢得多element in some_set


推荐阅读