簡體   English   中英

如何在 Python 中檢查兩個列表中不區分大小寫的字符串

[英]How to check case insensitive strings in two lists in Python

我必須比較兩個列表,以及new_users的字符串是否已經在現有列表中可用,然后系統應該突出顯示它。 我編寫了以下代碼並且它有效。 如果有人可以分享更好的方法來做同樣的事情,你會感激嗎?

    current_users = ["john", "Cindy", "Peter", "Tesla", "Briteny"]
    new_users = ["JOHN", "Cindy", "Nomy", "Tesla", "Tina"]
    i = 0
    for new_user in new_users:
        if new_user.lower() == current_users [i].lower():
            print ("The user name is already taken")
        else:
            print ("The user name is available")
        i += 1

有一種更好的 Pythonic 方法來獲取可用的用戶名列表:

availableUsers = list(set([x.lower() for x in current_users])-set([y.lower() for y in new_users]))
  • 使用列表理解降低所有元素,設置兩個列表(刪除重復項)並減去它們並轉換回列表
  • 獲取可用使用數量len(availableUsers)

不可用的:

unavailableUsers = list(set([x.lower() for x in new_users])&set([y.lower() for y in current_users]))

您可以簡單地將lists轉換為sets因為將它們進行比較也很容易找到intersectionsymmetric differencedifferenceunion等。

這是一個例子

current_users = ["john", "Cindy", "Peter", "Tesla", "Briteny"]
new_users = ["JOHN", "Cindy", "Nomy", "Tesla", "Tina"]

available_users = list(set(map(lambda x: x.lower(), current_users)) - set(map(lambda x: x.lower(), new_users)))
taken_users = list(set(map(lambda x: x.lower(), current_users)) & set(map(lambda x: x.lower(), new_users)))

print(available_users)
print(taken_users)

然后

for i in taken_users:
     print(f'username {i} is already taken')

or

for i in available_users:
     print(f'username {i} is available')

輸出

username cindy is already taken
username tesla is already taken
username john is already taken
...

這是對您的代碼的簡單采用,它只是使用所有現有用戶的集合來檢查新用戶是否已經存在。 另外,我在打印中添加了用戶名。

current_users = ["john", "Cindy", "Peter", "Tesla", "Briteny"]
new_users = ["JOHN", "Cindy", "Nomy", "Tesla", "Tina"]


current_users_prepared = {user.lower() for user in current_users}

for new_user in new_users:
    if new_user.lower() in current_users_prepared:
        print ("The user name '{}' is already taken".format(new_user))
    else:
        print ("The user name '{}' is available".format(new_user))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM