我想在列表中打印一个列表,但不是这样:
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 :(得分: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])