对于Python爱好者和专家
我的代码:
def getAssignee(keyTitle):
assignee = ''
for item in assigneeList:
if(item['title']==keyTitle):
assignee = item['name']
break
return assignee
我的意图:在python中试用过滤器,并用过滤器函数替换上述代码。受让人列表是一个字典列表。 例如
assigneeList = [{'title':'Book', 'name':'Davis'},{'title':'TV','name':'Samsung'}]
我的参考资料:Most efficient way to search in list of dicts
我的尝试:
assignee = filter(lambda item: item['title']=='TV',assigneeList)
print(assignee['name'])
我的输出: 不工作。错误“值‘受让人’不可订阅”
我的问题:如何获取受让人名称,比如如何从getAssignee()函数获取
filter
的结果是一个filter对象,您可以通过几种方式处理它,并处理空过滤器的可能性使用
next(.., None)
获取第一个匹配或None
值收集列表中的项目,然后选择第一个
next
解决方案如果性能更好,因为它不会生成所有筛选器对象,(list
将消耗所有筛选器,最终可能会很大)在python 3中
filter
函数将返回filter对象filter(function, iterable)
等价于生成器表达式(item for item in iterable if function(item))
。因此,为了评估项目,您可以调用list(assignee)
相关问题 更多 >
编程相关推荐