我有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')
id
和name
的元素个数不一样。当输入为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"))