使用过滤器和关联列表筛选图像列表
我有一个作业,其中一部分要求我定义一个过程过滤描述。简单来说,我有一堆图片想要进行筛选:
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 个回答
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