2016-04-28 88 views
2

我想在列表中打印列表中的列表,但不能这样:故障打印列表

print(myList[1]) 

我希望能够通过列表来搜索,查找基于一个正确的列表用户输入并打印适当的列表。这是到目前为止我的代码:

myList = [['E1234','12/09/14','440','A','0'],['E3431','10/01/12','320','N','120'],['E0987','04/12/16','342','A','137']] 
prompt = input("Enter a player name: ") 

if prompt in myList: 
    print(myList["""What do I put in here???"""]) 

所以,如果我进入“E1234”为prompt,我想这个代码通过myList看,拿起名单,并显示它。请帮助我,我卡住了。

更新

对不起,我以前没有提到它,但界限是使用列表,没有字典。

+0

是否有外部结构为列表而不是字典的原因? – Michael

+1

边界是使用列表,而不是字典。但是,多亏了 – User0123456789

+0

'prompt'可能出现在多个列表中? –

回答

2

编辑@kingledion回答说,正确的实现可能是使用字典。如果你坚持列表中的数据结构的此列表中,您可以使用列表解析来过滤出相关的列表:

details = [x for x in myList if x[0] == prompt] 
if details: 
    print details 
+0

不错,这处理'prompt'出现不止一次;但是,输出与OP请求的不同(应该是'details [0]')。 –

+0

谢谢,它的工作! – User0123456789

4

你正在考虑的实现是一个字典()。

https://docs.python.org/3.5/library/stdtypes.html#mapping-types-dict

的字典为您提供了一个密钥来访问数据,在这种情况下,球员名字的能力。

mydict = {'E1234': ['12/09/14','440','A','0'],'E3431': ['10/01/12','320','N','120'],'E0987': ['04/12/16','342','A','137']} 
prompt = input("Enter a player name: ") 

print(mydict.get(prompt, "Player not found")) 

编辑:

您也可以通过把一个列表转换成一个字典:

mydict = {key: value for (key, value) in [(x[0], [x[1], x[2], x[3], x[4]]) for x in myList]} 

EDIT2:

那么好吧,如果你不能在所有使用字典,然后模拟一个:

fake_dict_keys = [x[0] for x in myList] 
print(myList[fake_dict_keys.index(prompt)]) 
+0

如果OP控制要搜索的数据的表示,那很好;目前尚不清楚问题是否属实。 –

+0

边界是我必须使用列表 – User0123456789

-1

您可以将列表转换为一个字典,然后做任务。示例如下:

myList = [['E1234','12/09/14','440','A','0'],['E3431','10/01/12','320','N','120'],['E0987','04/12/16','342','A','137']] 

myDict = { i[0]: i for i in myList } 

prompt = input("Enter a player name: ") 

if prompt in myDict: 
    print(myDict[prompt]) 
+0

这假设不超过1个元素共享相同的第一个值。 –

+0

是的,但是,就OP所描述的问题而言,情况就是如此。指令“myList中的提示”意味着只有一个事件,该名称就像一个ID。 –

+0

“myList中的提示符”只说了至少一次;认为这是一个身份证是你所做的一个假设。 –