2016-04-28 106 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中的提示符」只說了至少一次;認爲這是一個身份證是你所做的一個假設。 –