使用过滤器和关联列表过滤图像列表

时间:2011-10-31 02:14:15

标签: python

我有一个作业,其中一部分要求定义一个process_filter_description。基本上我有一个我要过滤的图像列表:

images = ["1111.jpg", "2222.jpg", "circle.JPG", "square.jpg", "triangle.JPG"]

现在我有了一个可以用来过滤图像的关联列表:

assc_list = [ ["numbers", ["1111.jpg", "2222.jpg"]] , ["shapes", ["circle.JPG", "square.jpg", "triangle.JPG"]] ]

我可以使用过滤器描述来选择我想要应用过滤器的关联列表,关键字由冒号包围):

f = ':numbers:'

我不确定如何启动它。用言语我至少可以想到:

  • 过滤器为':numbers:'
  • 将每个图像项与每个与关联列表中的数字相关联的术语进行比较。
  • 如果术语匹配,则将术语附加到空列表。

现在我只是想让我的代码只打印数字关联列表中的术语,但它会打印出所有这些术语。

def process_filter_description(f, images, ia):

    return_list = []

    f = f[1:-1]

    counter = 0

    if f == ia[counter][0]:
        #print f + ' is equal to ' + ia[counter][0]

        for key in ial:
            for item in key[1]:
                #print item
                #return_list.append(item)

    return return_list

1 个答案:

答案 0 :(得分:2)

而不是“关联列表”,如何使用字典?

filter_assoc = {'numbers': ['1111.jpg', '2222.jpg'] ,
                'shapes':  ['circle.JPG', 'square.jpg', 'triangle.JPG']}

现在,只需查看每组中的图像:

>>> filter_assoc['numbers']
['1111.jpg', '2222.jpg']
>>>
>>> filter_assoc['shapes']
['circle.JPG', 'square.jpg', 'triangle.JPG']

您的处理功能将变得非常简单:

def process_filter_description(filter, association):
  return association[filter[1:-1]]

我会在这里大声思考,所以这就是我用来执行字典任务的功能:

def process_filter_description(index, images, association):
  return_list = []
  index = index[1:-1]

  for top_level in association:
    if top_level[0] == index:
      for item in top_level[1]:
        return_list.append(item)

      break

  return return_list