让John,john和JOHN在python列表中表示相同的变量?

时间:2017-12-04 18:21:19

标签: python

我的问题是这个。

如何使用,如果JOHN或john已在使用中,则用户无法创建新的user_name John。

我可以制作user_name.upper()= user_name.lower()或类似内容。

这些名称是通过current_users循环迭代的。我希望循环检测当前用户,如果已经在其upper()或title()表单中使用了名称,则禁止使用该名称。

编辑:如果可能,我可以获得最“pythonic”的方式。感谢。

4 个答案:

答案 0 :(得分:1)

如果您不需要循环使用current_users,则可以使用列表推导:

if user_name.lower() in [user.lower() for user in current_users]:
    # user_name already taken

这与做:

相同
lower_current_users = list()
for user in current_users:
    lower_current_users.append(user.lower())

if user_name.lower() in lower_current_users:
    # user_name already taken

正如您所看到的,列表理解需要较少的代码行,对于此类事物非常有用。

或者,如果您需要检查多个内容,则可以使用正常for循环:

for user in current_users:
    if user_name.lower() == user.lower():
        # user_name already taken

答案 1 :(得分:0)

你可以使用lambda(一个小的匿名小函数)并使你的整个列表小写,然后比较下面的new_name。如果是新的,请添加,如果不是,请不要。

name_list = ["John", "Sam", "Joe"]
new_name = "jOhN"

if new_name.lower() in [x.lower() for x in name_list]:
    print("nope")
else:
    print("new name, add it!")
    name_list.append(new_name)

print (name_list)

答案 2 :(得分:0)

   for username in current_user_names:
            if ip_username.lower() == username.lower():
                Flag = 1
                print ‘match found’
            else:
                Flag = 0
                current_user_names.append(username)

或者只是在您添加用户名时添加小写字母。

your_userlist.append(username.lower())

您只需使用IN关键字检查

即可
if current_user.lower() IN your_userlist:

答案 3 :(得分:0)

使用以下代码

existing_users = ["John","tilak","RAMESH","SidDDu"]
while True:
    name = raw_input("Enter a name: ")

    for i in existing_users:
        if name.lower() == i.lower():
            print "Name Already exists!Please choose another"
        else:
            existing_users.append(name)