2016-05-01 128 views
1

所以我有一个列表如何查找列表中的列表的匹配字符串?

myList = [["hello my name is john"],["hey my name is john"],["hello my name is smith"]] 

而且我希望用户能够搜索hello和输出是

"hello my name is john" 
"hello my name is smith" 

或寻找john和输出是

"hello my name is john" 
"hey my name is john" 

我现在的代码没有任何输出

def pattern(): 
    search = input("Search: ") 
    match = [word for word in myList if search in word] 
    for confirmedMatch in match: 
     print(confirmedMatch) 

pattern() 

我在做什么错?

回答

4

问题出在您的清单上。

如果您的列表是一个字符串列表而不是列表列表,那么您可以编码。

myList = ["hello my name is john","hey my name is john","hello my name is smith"]

鉴于您最初的解决方案,它会检查是否“你好”是列表中的一个元素。您希望它检查它是否是字符串的子字符串。

如果你宁愿它列出的清单,行

match = [word for word in myList if search in word]成为

match = [word for word in myList if search in word[0]](假设内部列表只有一个元素)工作

+0

是的,我意识到,使其成为一个列表的列表是一个更困难的方式这样做,但这是我需要做的,谢谢你的帮助,虽然+1 – oneman

+0

@LiamEmery这里的解决方案是正确的;看看最后的代码部分。如果这有效,我会建议将其标记为答案。 –

+0

如果内部列表有多个元素,如果搜索词[0]可以被替换为'如果有(搜索e中的词)'或'如果全部(搜索e中的词)取决于你想达到什么。 – ursan

相关问题