无法在列表中打印列表

时间:2016-04-28 17:56:51

标签: python list python-3.x

我想在列表中打印一个列表,但不是这样:

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,选择列表并显示它。请帮助我,我被困住了。

更新

很抱歉我之前没有提到它,但边界是使用列表,而不是字典。

3 个答案:

答案 0 :(得分:4)

您正在考虑的实现是一个dict()。

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

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

编辑:

您还可以使用以下命令将列表转换为dict:

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

答案 1 :(得分:2)

编辑@kingledion回答,正确的实现可能是使用字典。如果您坚持使用此列表列表数据结构,则可以使用列表推导来仅过滤掉相关列表:

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

答案 2 :(得分:-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])