如果我有List PhoneDirectory 例如:
['John:009878788677' , 'Jefrey:67654654645' , 'Maria:8787677766']
可用于比较列表中每个条目中子串的存在(例如:Joh)的函数。
我尝试过使用
if(PhoneDirectory.find(Joh) != -1)
但它不起作用
请帮助..
答案 0 :(得分:16)
如果您想分别检查每个条目:
for entry in PhoneDirectory:
if 'John' in entry: ...
如果您只是想知道任何条目是否满足条件而不关心哪一条:
if any('John' in entry for entry in PhoneDirectory):
...
请注意,any
不会“浪费”工作 - 只要找到满足条件的一个条目,它就会返回True
(如果没有条目符合条件)条件,它必须检查每一个,以确认,当然,然后返回False
)。
答案 1 :(得分:3)
if any(entry.startswith('John:') in entry for entry in PhoneDirectory)
但是我会用两个元素准备一些东西,因为你的字符串列表不适合任务:
PhoneList = ['John:009878788677' , 'Jefrey:67654654645' , 'Maria:8787677766']
numbers = { a:b
for item in PhoneList
for a,_,b in (item.partition(':'),)
}
print numbers
print "%s's number is %s." % ( 'John', numbers['John'] )
答案 2 :(得分:1)
由于还没有人推荐这个,我会这样做:
all_johns = [p for p in PhoneDirectory if 'Joh' in p]
答案 3 :(得分:0)
您可以对“:”进行拆分,并在结果数组的第一个元素中查找您要查找的内容。
dir = ['John:009878788677' , 'Jefrey:67654654645' , 'Maria:8787677766'];
for a in dir:
values = a.split(":")
if values[0] == "John":
print("John's number is %s" % (values[1]))
答案 4 :(得分:0)
如果此任务的性能计算使用某些SuffixTree实现。或者只是让任何DBMS引擎完成索引工作。