首页 > 解决方案 > 在列表列表中使用过滤器和 lambda

问题描述

我使用列表列表。这些列表中的每一个都是相同的——它们包含标题、url 和一些额外的统计信息(总是以相同的顺序)。


我的清单

我想创建一个函数find_title,它接受想要的标题并返回整个列表(带有标题、url 和统计信息)。这是我的尝试

def find_title(title, ls):
    return(list(filter(lambda x: x[0] == title, ls)))

但是它不起作用,它什么也不返回。这可能是因为x[0]只表示大列表中的第一个元素。如何修复?

编辑。这是 ls 的一部分:

[['Der Vagabund und das Kind (1921)',
  'http://www.imdb.com/title/tt0012349/',
  0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
 ['Goldrausch (1925)',
  'http://www.imdb.com/title/tt0015864/',
  0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
 ['Metropolis (1927)',
  'http://www.imdb.com/title/tt0017136/',
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0]]

标签: pythonlistlambdafilter

解决方案


您可以像这样直接从数据框中提取信息:

import pandas as pd
df = pd.DataFrame([['Der Vagabund und das Kind (1921)',
  'http://www.imdb.com/title/tt0012349/',
  0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
 ['Goldrausch (1925)',
  'http://www.imdb.com/title/tt0015864/',
  0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
 ['Metropolis (1927)',
  'http://www.imdb.com/title/tt0017136/',
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0]])

print(df[df[0] =='Goldrausch (1925)'])

推荐阅读