【问题标题】:Using filter and lambda in a list of lists在列表列表中使用过滤器和 lambda
【发布时间】:2020-03-30 19:03:15
【问题描述】:

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


我想创建一个函数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]]

【问题讨论】:

  • title in x[0]?
  • 您的解决方案应该有效。能否请您打印您的ls 并分享?
  • 分享你的数据,我的意思是一个样本
  • @Hendrra 您的功能应该可以工作。请记住,它会返回列表列表,所以也许这是您的问题...
  • @Hendrra 我认为您的问题与提供的标题有关。尝试在函数的第一行打印它以检查值是否与您期望的相同

标签: python list lambda filter


【解决方案1】:

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

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)'])

【讨论】:

  • 这基本上是你问题的一个答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 2021-03-21
  • 1970-01-01
  • 2018-06-07
相关资源
最近更新 更多