找到忽略大小写的字符串的索引

时间:2013-03-14 22:24:07

标签: python

我有一个字符串,我需要在列表中找到索引而忽略大小写。

MG
['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']

我想在下一行中找到MG的索引作为列表。

3 个答案:

答案 0 :(得分:14)

您可以使用生成器来实现此优雅方法之一:

>>> list = ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
>>> next(i for i,v in enumerate(list) if v.lower() == 'mg')
3

上面的代码生成一个生成器,它在列表中产生下一个不区分大小写的mg出现的索引,然后调用next()一次,以检索第一个索引。如果您在列表中多次出现mg,则反复调用next()会产生所有这些内容。

由于不需要创建整个较低的套件清单,因此这样做的好处是价格稍低。只有尽可能多的处理列表才能找到下一场比赛。

答案 1 :(得分:5)

您可以通过将总列表和要搜索的项目转换为小写来忽略这些案例。

>>> to_find = 'MG'
>>> old_list =  ['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
>>> new_list = [item.lower() for item in old_list]
>>> new_list.index(to_find.lower())
3

答案 2 :(得分:0)

与第一个列表相同,但是如果您只对索引感兴趣,我认为不需要创建新列表和旧列表

select t2.sum_val, t2.year, t2.month 
from (
    SELECT SUM(v) AS sum_val, year, month
    FROM `d`
    GROUP BY year, month
) t2 
INNER JOIN (
    select max(sum_val) max_val, year
    from (
        SELECT SUM(v) AS sum_val, year, month
        FROM `d`
        GROUP BY year, month
    )  t  
    group by year 
) t3  on t3.max_val = t2.sum_val    and t3.year  = t2.year