Python:按条件将列表过滤到新列表中

时间:2019-05-09 21:35:41

标签: python

我有一个列表变量my_list,其中包含字典条目。

my_list = [{'tweet':'tweet_text1','author':'twitter_name1'},
{'tweet':'tweet_text2','author':'twitter_name2'},
{'tweet':'tweet_text3','author':'twitter_name3'}]

我需要过滤掉键'tweet'下少于10个字符的所有结果,并将这些值存储在新变量my_list_cleaned

我还需要知道已删除的项目数,并分别打印。

我编写了一个函数,该函数在另一节中也做了类似的工作,但是它似乎没有工作列表

def filters(x): 
    return [a for a in x.split() if len(a) > 9]

3 个答案:

答案 0 :(得分:1)

使用列表理解删除所有短推文。

my_list_cleaned = [v for v in my_list if len(v['tweet']) >= 10]

您可以通过比较列表的长度来获取删除的推文数量

removed = len(my_list) - len(my_list_cleaned)

答案 1 :(得分:0)

为什么不只遍历my_list中的每个元素并检查“ tweet”键?像这样:

  def filter(l):
    for d in l:
      if(len(d['tweet']) > 10):
        #do something

答案 2 :(得分:0)

您只需遍历列表并检查给定键“ tweet”的值。

def f(l):
 r = []
 for d in l:
  if len(d['tweet'])<=10:
   continue
  r.append(d)
 return r

您可以使用上述功能返回列表。从那里,您将要制作另一个函数,将原始len gth与新len gth进行比较。...diff = len(_old) - len(_new)