Python 3.x 如何检查输入字符串是否是任何元组的任何组件的一部分

Python 3.x 如何检查输入字符串是否是任何元组的任何组件的一部分,python-3.x,tuples,Python 3.x,Tuples,我在使用输入字符串和检查它是否是数据列表中元组的一部分时遇到问题 data = [(Mr. John Doe, 345.678.9765, johndoe@gmail.com), (Ms. Mary Doe, 345.123.4567, marydoe@gmail.com)] print("Search for: ") s = input() while s: for a in data: if any(b[0] == s for b in a):

我在使用输入字符串和检查它是否是数据列表中元组的一部分时遇到问题

data = [(Mr. John Doe, 345.678.9765, johndoe@gmail.com),
        (Ms. Mary Doe, 345.123.4567, marydoe@gmail.com)]
print("Search for: ")
s = input()
while s:
   for a in data:
    if any(b[0] == s for b in a):
        print(a)
    else:
        print("Not Found")
print("Search for: ")
s = input() 
如果我输入
Mr.
作为输入,它将无法在元组中找到组件,但如果我输入
j
作为输入,它将打印出来:

 (Mr. John Doe, 345.678.9765, johndoe@gmail.com) 
any(b[0]==s表示a中的b)
只有在用户输入的全名与名称字符串中的全名完全相同时才会为
True
(例如
John Doe先生
)。相反,使用
in
操作符检查用户输入是否在名称字符串的任何部分中:

data = [('Mr. John Doe', '345.678.9765', 'johndoe@gmail.com'),
        ('Ms. Mary Doe', '345.123.4567', 'marydoe@gmail.com')]

print("Search for: ")

s = input()

result = None # set a variable to hold our result

for a in data:
    if any(s in b for b in a): # use in to check if substring 's' is in string 'b'
        result = a[0]  # save the name that contains user input
        break          # exit loop if found
    else:
        result = "Not Found"

print(result)
它在
Mr.
输入中失败的原因是
b[0]
中的
b[0]==s表示元组中每个字符串中的第一个字母,三个字符的字符串永远不会等于一个字符

类似地,当我们输入
j
时,a
中b的比较
b[0]==s与第一个元组(
j
中)最后一个字符串中的第一个字符匹配johndoe@gmail.com
),所以它确实输出了那个元组


希望这能有所帮助。

尝试使用
str.startswith
代替…使用内置的
any
功能:
any(any(any)(在项目中表示项目在tup中)表示数据在tup中)
感谢您的建议,我非常感谢!非常欢迎!如果我的答案是有用的,请考虑投票表决(点击旁边的箭头回答),或者如果它解决了你的问题考虑通过点击绿色复选标记。谢谢