Python 在列表中查找和打印项目?

Python 在列表中查找和打印项目?,python,list,python-3.x,Python,List,Python 3.x,我希望从列表中提取东西并打印出来,就像数据库一样。如何打印用户要求的内容 name = [John, Sam] ages = [23, 7] answer = input("Search by (n)ame or (a)ge") if answer == "n": askName= input("what name?") # ????? elif answer == "a": askAge = input("what age") else start() 使用if as

我希望从列表中提取东西并打印出来,就像数据库一样。如何打印用户要求的内容

name = [John, Sam]
ages = [23, 7]
answer = input("Search by (n)ame or (a)ge")
if answer == "n":
    askName= input("what name?")
    # ?????
elif answer == "a":
    askAge = input("what age")
else start()
使用
if askName in name
可以检查
askName
是否在
name
列表中。如果是,您可以使用
index()
获取索引,并使用它访问
ages
列表中的值。为一个时代取名字也是这样


使用
if askName in name
可以检查
askName
是否在
name
列表中。如果是,您可以使用
index()
获取索引,并使用它访问
ages
列表中的值。获取年龄名称的方法相同。

您可以使用字典:

#!/usr/bin/python
userlist = [
    {'name':'John', 'age':23},
    {'name':'Sam', 'age':7},
    {'name':'Anna', 'age':7},
    {'name':'John', 'age':10},
]

answer = input("Search by (n)ame or (a)ge")
if answer == "n":
    askName= input("what name?")
    for i in userlist:
        if i['name'] == askName:
            print('name: '+askName+', age: '+str(i['age']))
elif answer == "a":
    askAge = input("what age")
    for i in userlist:
        if i['age'] == int(askAge):
            print('name: '+str(i['name'])+', age: '+askAge)
学生可以有相同的姓名和年龄,因此输出如下:

Search by (n)ame or (a)gen
what name?Sam
name: Sam, age: 7

Search by (n)ame or (a)gea
what age7
name: Sam, age: 7
name: Anna, age: 7
要避免这种情况,您可以按ID选择学生:

#!/usr/bin/python
userlist = [
    {'name':'John', 'age':23},
    {'name':'Sam', 'age':7},
    {'name':'Anna', 'age':7},
    {'name':'John', 'age':10},
]

answer = input("Search by (n)ame or (a)ge or (i)d\n")
if answer == "n":
    askName= input("what name?\n")
    for i in userlist:
        if i['name'] == askName:
            print('name: '+askName+', age: '+str(i['age']))
elif answer == "a":
    askAge = input("what age?\n")
    for i in userlist:
        if i['age'] == int(askAge):
            print('name: '+str(i['name'])+', age: '+askAge)
elif answer == "i":
    askId = input("what id?\n")
    print('id: ' + askId + ',name: '+str(userlist[int(askId)]['name'])+', age: '+str(userlist[int(askId)]['age']))
输出:

Search by (n)ame or (a)ge or (i)d
i
what id?
1
id: 1,name: Sam, age: 7

您可以使用字典:

#!/usr/bin/python
userlist = [
    {'name':'John', 'age':23},
    {'name':'Sam', 'age':7},
    {'name':'Anna', 'age':7},
    {'name':'John', 'age':10},
]

answer = input("Search by (n)ame or (a)ge")
if answer == "n":
    askName= input("what name?")
    for i in userlist:
        if i['name'] == askName:
            print('name: '+askName+', age: '+str(i['age']))
elif answer == "a":
    askAge = input("what age")
    for i in userlist:
        if i['age'] == int(askAge):
            print('name: '+str(i['name'])+', age: '+askAge)
学生可以有相同的姓名和年龄,因此输出如下:

Search by (n)ame or (a)gen
what name?Sam
name: Sam, age: 7

Search by (n)ame or (a)gea
what age7
name: Sam, age: 7
name: Anna, age: 7
要避免这种情况,您可以按ID选择学生:

#!/usr/bin/python
userlist = [
    {'name':'John', 'age':23},
    {'name':'Sam', 'age':7},
    {'name':'Anna', 'age':7},
    {'name':'John', 'age':10},
]

answer = input("Search by (n)ame or (a)ge or (i)d\n")
if answer == "n":
    askName= input("what name?\n")
    for i in userlist:
        if i['name'] == askName:
            print('name: '+askName+', age: '+str(i['age']))
elif answer == "a":
    askAge = input("what age?\n")
    for i in userlist:
        if i['age'] == int(askAge):
            print('name: '+str(i['name'])+', age: '+askAge)
elif answer == "i":
    askId = input("what id?\n")
    print('id: ' + askId + ',name: '+str(userlist[int(askId)]['name'])+', age: '+str(userlist[int(askId)]['age']))
输出:

Search by (n)ame or (a)ge or (i)d
i
what id?
1
id: 1,name: Sam, age: 7

输出是什么?如果我问你叫什么名字“约翰”,你会把“约翰”还给我吗?“你的学生约翰23岁了”约翰和萨姆是什么类型的物体。这些不是字符串,它们是某种
Person
对象吗?如果它们是一个对象,它们可能会有一个属性来存储年龄,因此您可以只拥有一个
Person
对象的列表,而不是两个平行列表。如果存在多个匹配项,例如按年龄搜索,并且有3个年龄相同的人,会有什么输出?如果我问你叫什么名字“约翰”,你会把“约翰”还给我吗?“你的学生约翰23岁了”约翰和萨姆是什么类型的物体。这些不是字符串,它们是某种
Person
对象吗?如果它们是一个对象,它们可能会有一个属性来存储年龄,因此您可以只拥有一个
Person
对象列表,而不是两个平行列表。如果有多个匹配项,例如,按年龄搜索,有3个年龄相同的人?应该指出,这将返回指定值第一次出现的索引。如果学生的姓名/年龄相同,则可能会产生错误的输出。@i错了。但是如果有同名同龄的学生,就没有办法知道谁是谁。那样的话,你需要一些身份证。是的,有。可以使用手动for循环返回所有匹配项。@i否则您仍不知道正确的值是多少。假设我们有
['Katy','Katy']
[23,51]
。Katy的年龄有多大?应该指出,这将返回指定值第一次出现的索引。如果学生的姓名/年龄相同,则可能会产生错误的输出。@i错了。但是如果有同名同龄的学生,就没有办法知道谁是谁。那样的话,你需要一些身份证。是的,有。可以使用手动for循环返回所有匹配项。@i否则您仍不知道正确的值是多少。假设我们有
['Katy','Katy']
[23,51]
。凯蒂多大了?