2014-04-01 138 views
0
templist=[] 
temp=[] 
templist2=[] 
tempstat1={} 
station1={} 
station2={} 
import os.path 

def main(): 

    #file name=animallog.txt  
    endofprogram=False 
    try: 
     filename=input("Enter name of input file >") 
     file=open(filename,"r") 
    except IOError: 
     print("File does not exist") 
     endofprogram=True 

    for line in file: 
     line=line.strip('\n') 

     if (len(line)!=0)and line[0]!='#':   
      (x,y,z)=line.split(':') 

      record=(x,z) 

      if record[0] not in station1 or record[0] not in station2: 

       if record[1]=='s1' and record[0] not in station1: 
        station1[0]=1 

       if record[1]=='s2' and record[0] not in station2: 
        station2[0]=1 

      elif record[0] in station1 or record[0] in station2: 

       if record[1]=='s1': 
        station1[0]=station1[0]+1 
       elif record[1]=='s2': 
        station2[0]=station2[0]+1 

    print(station1) 
    print(station2) 

main() 

嗨,大家好!Python閱讀文件到字典

我只是一個程序,它從這種格式的文件讀取的工作:考慮在底部

但由於某些原因輸出{0:1}兩個station1station2。我只是想知道爲什麼會發生這種情況?我嘗試使用調試功能,但無法理解。 感謝你的全部努力! 謝謝:)

FILE FORMAT: 
(NAME:DATE:STATION NUMBER) 

a01:01-24-2011:s1 

a03:01-24-2011:s2 

a03:09-24-2011:s1 

a03:10-23-2011:s1 

a04:11-01-2011:s1 

a04:11-02-2011:s2 

a04:11-03-2011:s1 

a04:01-01-2011:s1 
+0

我想你想使用station1 [record [0]]而不是station1 [0],station2相同 – kostya

+0

是的,我在此之前修好了!發現我的錯誤,但感謝您的幫助:) – Newbie

回答

1

你的字典只持有{0:1},因爲這是你在他們把所有!

station1[0]=1 # This sets a key-value pair of 0 : 1 

我不完全確定你的預期輸出是什麼,但我認爲你正在做的比想要的要難。我猜你想是這樣的:

name, date, station = line.split(':') # use meaningful identifiers! 

if name not in station1 and station == 's1': 
    station1[name] = date 
elif name not in station2 and station == 's2': 
    station2[name] = date 

這會給你輸出的字典是這樣的:

{'a01' : '01-24-2011', 
'a03' : '09-24-2011'} 

注意,通過檢查項已在字典中,你只有會將您遇到的任何非唯一密鑰的第一個添加到任何給定的字典中(例如,您只會在示例輸入中獲得四個'a04'條目中的前兩個 - 後兩個將被忽略,因爲'a04'已經是在兩個dicitonaries)。

+0

嗨!我看到了,仍然感覺很蠢。非常感謝你:) – Newbie