Python如何返回字符串编号列高于数字的列表中的列表



我有一个得到这些值的列表列表-

firstList=['Black Mirror,Drama,2011,8.8', 'BoJack Horseman,animation,2014,8.7','Westworld,Drama,2016,8.7']

如何做到这一点:firstList.ayear<2015年

并返回这个:

secondList=['Black Mirror,Drama,2011,8.8', 'BoJack Horseman,Animation,2014,8.7']

这看起来像csv。使用for循环并每次格式化值以添加更多条件来帮助您找到所需的数据将是一项乏味的任务。我建议使用pandas库,因为你的数据看起来像csv。如果你有csv,使用这个库会更好。代码是:

import pandas as pd
from io import StringIO
listA = ['Black Mirror,Drama,2011,8.8', 'BoJack Horseman,animation,2014,8.7', 'Westworld,Drama,2016,8.7']
df = pd.read_csv(io.StringIO("n".join(listA)), header=None)
result = df.loc[df[2] < 2015] #The main search line

在执行搜索的行中,注意2对应于年份列。这种方法还可以让您轻松地执行一些复杂的任务。例如,按降序排列最后一列就像result = df.sort_values(3, ascending=False)一样简单

并在执行搜索或排序操作后打印存储在result中的名称:

for row in result:
print(row[0])

要安装熊猫:pip install pandas

只需使用for循环并检查每个循环:

listB = []
for s in listA:
if int(s.split(',')[2]) < 2015:
listB.append(s)

或者一行具有列表理解能力(基本上是一样的(:

listB = [s for s in listA if int(s.split(',')[2]) < 2015]

要按评级对列表进行排序,您可以这样做:(如果不是您想要的方式,请使用reverse=True(

listB = sorted(listB, key=lambda s:float(s.split(',')[3]))

相关内容

最新更新