我有一个字符串,我需要在列表中找到索引而忽略大小写。
MG
['ADMISSION' ,'Colace','100','mg', 'b.i.d.' , 'insulin','Lente','12']
我想在下一行中找到MG的索引作为列表。
答案 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