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



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

这是我目前为止写的:

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

我想要它做的是打印相同索引的内容在"name"列表,在本例中是"james">

感谢

就像评论说的那样,把它改成下面的样子:

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

里面

你需要做的就是:

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')

由于您想在相同的索引处打印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"))

相关内容

  • 没有找到相关文章

最新更新