python: list1 的索引等于 list2 的索引

python: index of list1 equal to index of list2

我有 2 个列表,它们的长度相同且顺序正确,我需要(我认为)是列表 1 的索引等于列表 2 的索引,并在该索引处打印列表 2 的内容。

这是我目前所拥有的:

id = [10610, 12772, 10611, 13434, 13397, 13854]

name = ['sarah', 'john', 'mark', 'james', 'jack']

userid = int(input('enter user ID: '))
ind = id.index(userid)
 
if userid in id:
    print(ind)
else:
    print('wrong ID')

输出:

enter user ID: 13434
3

我想要它做的是,打印“名称”列表中相同索引处的内容,在本例中为“james”

谢谢

您只需执行以下操作:

id = [10610, 12772, 10611, 13434, 13397, 13854]

name = ['sarah', 'john', 'mark', 'james', 'jack']

userid = int(input('enter user ID: '))
ind = id.index(userid)
if userid in id:
    print(name[ind])  # Change in this line
else:
    print('wrong ID')

好吧,按照评论所说的那样进行更改,如下所示:

    id = [1, 2, 3, 4, 5, 6]

    name = ['sarah', 'john', 'mark', 'james', 'jack']

    userid = int(input('enter user ID: '))

    if userid in id:
        ind = id.index(userid) #notice this statement is inside the if and not outside
        print(name[ind])
    else:
        print("wrong id")

如果你在检查 userid(他们输入的)是否在 id 之前尝试使用 inden(..),那么你将得到 ValueError: <some-numer> is not in list

所以最好在 if

中进行

由于要在同一索引处打印来自name的字符串,可以使用name[ind].

不过,上面给出的代码还有一些其他问题 -

  • if-else 条件没有执行任何操作。如果 userid 不在 id 列表中,ind = id.index(userid) 将给出 ValueError,程序将崩溃。这可以重构为以下内容:
id = [10610, 12772, 10611, 13434, 13397, 13854]

name = ['sarah', 'john', 'mark', 'james', 'jack']

userid = int(input('enter user ID: '))
 
if userid in id:
    print(name[id.index(userid)])
else:
    print('wrong ID')
  • idname中的元素个数不一样。当输入为 13854 时,这可能导致 IndexError。这可以通过检查 len(name) < ind
  • 来解决
  • 使用两个列表不是一个非常干净的方法。对任一数组的任何操作都可能改变数据的映射。更好的方法是使用字典。
users = {
    "10610": "sarah",
    "12772": "john",
    "10611": "mark",
    "13434": "james",
    "13397": "jack",
    "13854": None
}

userid = input('enter user ID: ')
print(users.get(userid, "Wrong User ID"))