我有七个从A到G的列表。我在输入n
中读取,例如:b1
。在列表1
中索引B
打印项目的最快方法是什么?
我已经尝试过了,但似乎太长了:
n = input()
if n[0].upper == 'A':
print(A[n[1]])
elif n[0].upper == 'B':
print(B[n[1]])
elif n[0].upper == 'C':
print(C[n[1]])
and so on ....
还有其他办法吗?是的,这不起作用:
print(n[0].upper()[n[1]])
答案 0 :(得分:2)
我说正确的方法是将您的列表整理到字典中,然后像这样使用它:
>>> A = [0, 1, 2]
>>> B = [3, 4, 5]
>>> data = {'A':A, 'B':B}
>>> data['B'][1]
4
或者,在您的情况下:
>>> data[n[0].upper()][n[1]]
4
答案 1 :(得分:1)
如果要最小化要打印的行数,可以将列表存储在字典中。看起来你知道列表索引不会超过10,否则n [1]就不够了
>>> my_dict = {}
>>>
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>>
>>> my_dict['a'] = a
>>> my_dict['b'] = b
>>> my_dict['c'] = c
>>>
>>> n='a1'
>>> print my_dict[n[0]][int(n[1])]
但在此之前,您应该检查输入的列表和索引是否存在。
答案 2 :(得分:1)
您可以使用python的内置globals()
方法。试试这个:
A = [1, 2, 3, 4, 5]
B = [10, 20, 30, 40, 50]
C = [100, 200, 300, 400, 500]
D = [1000, 2000, 3000, 4000, 5000]
n = input()
n, i = n[0].upper(), int(n[1])
print(globals()[n][i])
如果您的变量是函数或任何其他范围的本地变量,则可以使用globals()
的小兄弟locals()
。像这样:
print(locals()[n][i])
顺便说一下,你说位置,但你用作索引。 位置 1的绝对项目位于 index 0.你可能想要更多地澄清那一点。 :)