Search Python3使用用户输入筛选嵌套列表,或返回给定特殊字符的所有大小写

Search Python3使用用户输入筛选嵌套列表,或返回给定特殊字符的所有大小写,search,python-3.x,lambda,nested-lists,Search,Python 3.x,Lambda,Nested Lists,我试图找出如何根据给定的用户输入过滤嵌套列表,或者在用户键入“*”时返回所有案例 例如:对于这样的嵌套列表: st_list=[“11”,“adge”,22,“email”],[“0”,“adge”,21,3.44,“email”],[“2”,“adge”,33,3.43,“email”],[“1”,“ared”,43,3.55,“email”] 我正试图通过每个子列表的索引来过滤嵌套列表,以便对于st_list[1][I],其中[I]处的元素等于用户输入,将返回这些项 我在使用特定输入(本例中

我试图找出如何根据给定的用户输入过滤嵌套列表,或者在用户键入“*”时返回所有案例

例如:对于这样的嵌套列表:
st_list=[“11”,“adge”,22,“email”],[“0”,“adge”,21,3.44,“email”],[“2”,“adge”,33,3.43,“email”],[“1”,“ared”,43,3.55,“email”]

我正试图通过每个子列表的索引来过滤嵌套列表,以便对于st_list[1][I],其中[I]处的元素等于用户输入,将返回这些项

我在使用特定输入(本例中为srch_名称)时没有问题。我一直在使用:
new_list=list(过滤器(lambda n:n[1]==srch_name,st_list))


但是,当用户输入“*”时,我不确定如何返回任何case。有什么想法吗?

我从我的问题中找到了答案。因此,对于用户输入srch_name,如果用户输入等于n[1],我的lambda函数将返回True。在我的st_列表中,这些将评估为“adge”、“adge”、“adge”和“ared”。因此,如果用户输入为“adge”,则只返回带有adge的列表。如果我希望它在给定特定输入的所有情况下都返回,比如“*”,那么将srch_name=设置为“*”将计算为true。因此:

new_list = list(filter(lambda n:n[1]==srch_name or srch_name == "*", st_list))

我正在努力理解你到底想要什么,我想不出一个漂亮的句子来满足你的需求,但是你为什么不能只做一个简单的
if
语句呢
if input()==“*”:返回st_list
。回想起来,我没有说清楚。我试图做的是,如果给定“”,则返回每个子列表;如果用户键入“adge”,则仅返回“adge”。不过我想出了一个解决办法。在我的lambda中,有n[1]==srch\u name或srch\u name==“”。通过这种方式,无论哪种情况,它的评估结果都是正确的,并将返回我的列表。很高兴您能使用它:)我建议您写出您的解决方案作为答案,并接受它,以便将来的读者也能从中受益。