Python将文件读取到字典中

时间:2014-04-01 01:55:32

标签: python dictionary

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()
你好!

我正在研究一种程序,该程序从这种格式的文件中读取:在底部提供

但出于某种原因,{0:1}station1的输出为station2。我只是想知道为什么会这样?我尝试使用调试功能但无法理解。 感谢您的所有努力! 谢谢:))

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

1 个答案:

答案 0 :(得分: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'已经存在于两个双音素中。