打印列表高级

时间:2016-02-28 11:38:25

标签: python list

我有七个从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]])

3 个答案:

答案 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.你可能想要更多地澄清那一点。 :)