2017-10-09 82 views
0

代碼的主要目的是取n行輸入並將此數據添加到字典中,然後在字典上執行n個查詢。但只有最後一個查詢才能正常工作。for循環僅適用於最後一種情況

from sys import stdin 
n = int(input()) 
mydict={} 
for i in range(0,n): 
    pairs=input().split(' ') 
    key=pairs[0] 
    value=pairs[1] 
    mydict[key]=value 
    print (mydict) 


for a in stdin: 
    print(a) 
    if(a in mydict): 
     print(a+'='+mydict[a]) 
    else: 
     print("Not Found") 
+0

您是否輸入了正確的數據?您應該修復縮進。 – cmdLP

+0

是的,我通過打印字典來驗證它。 –

回答

2

stdin獲得的輸入包括新行字符(或多個),但是,由於使用input()在字典中的鍵的不這樣做,因此查找失敗。它在最後一次迭代中起作用,因爲該行由文件結尾而不是新行結束。

您可以通過在第二環行的結尾剝離空白解決它:

for a in stdin: 
    a = a.rstrip() 
    print(a) 
    if a in mydict: 
     print(a+'='+mydict[a]) 
    else: 
     print("Not Found") 
0

從標準輸入讀取的內容是原來的流。

所以當你點擊回車鍵時,'\n'被添加到流中。

解決方案1:使用輸入法。

解決方案2:從字典中讀取,並使用rstrip()方法,然後從字典中查詢。