比较不区分大小写的列表项

时间:2016-10-01 12:04:15

标签: python list python-3.x compare case-insensitive

所以我有两个列表,不同情况下的项目。有些项目相同但是小写/大写。如何创建一个循环来遍历所有项目并对每个项目执行某些操作,这也忽略了项目可能具有的情况?

fruits = ['Apple','banana','Kiwi','melon']
fruits_add = ['apple','Banana','KIWI','strawberry']

我想创建一个遍历fruits_add中每个项目的循环,并将其添加到fruits,如果该项目尚未在fruits中。但是,'apple''Apple'等项目需要计为相同的项目。

我理解如何将单个项目转换为不同的案例以及如何检查某个特定项目是否与另一个项目完全相同(忽略大小写)。我不知道如何为所有项目创建一个循环。

找到其他语言类似问题的答案,但不适用于Python 3。

我的尝试:

for fruit.lower() in fruits_add:
    if fruit in fruits:
        print("already in list")

这给了我一个错误:

SyntaxError: can't assign to function call

在比较列表之前,我还尝试将每个列表中的每个项目转换为小写,但这也不起作用。

2 个答案:

答案 0 :(得分:1)

for循环中的

fruit.lower()将无效,因为错误消息暗示,您无法分配给函数调用..

您可以做的是创建一个辅助结构(此处为set),其中包含fruits中现有水果的小写项目,appendfruits fruit.lower()中的fruit_add不在t集合中(包含来自fruits的小写水果):

t = {i.lower() for i in fruits}
for fruit in fruits_add:
    if fruit.lower() not in t:
        fruits.append(fruit)

现在fruits正在:

print(fruits)
['Apple', 'banana', 'Kiwi', 'melon', 'strawberry']

答案 1 :(得分:-1)

我不会在那里使用lower()函数。 使用低于此:

for fruit in fruits_add:
    if fruit.lower() in fruits:
        print("already in list")