基于字典中的键提取值

时间:2014-09-23 15:06:40

标签: python list dictionary append

我的文本文件有两列:1)第1列的格式为yyyy-mm-dd,2)第2列是降水。

目标:仅在4月,5月,6月,7月和8月(4,5,6,7,8)的月份从第2列中提取降水的原始值。

过程:使用line.split从第-1列中仅从yyyy-mm-dd格式中提取mm。

  • 制作字典以获得月份和降水值。
  • 在dct.items()中使用for k,v然后使用if语句从字典中提取相应的月份降水值

问题:我可以从字典项中成功打印k,v(月份和降水量)。但是,当我使用if语句提取特定月份的降水值时,我得到了空白数组。我想知道我可以使用.append以(1.8,2.1,3.3)格式获得降水。

代码:

file1 = open("test.txt","r")

Growing=[]
Intermediate=[]
Dormant=[]

for line in file1:
    line2 = line.split()
    WQ = line2[1]
    month = line2[0].split("-")[1]
    dct1={month:WQ}
    for k,v in dct1.items():
        if (k ==4 or k==5 or k==6 or k==7 or k==8):
            Growing.append(dct1 [k])
    print Growing

1 个答案:

答案 0 :(得分:0)

更明显的结构是列表字典:

data = collections.defaultdict()

并在循环中

data.setdefault( month,[]).append( WQ )

然后您可以按键访问每个月的数据。

也许更简单的方法是使用numpy.loadtxt,

map = {'jan':1,'feb':2,'mar':3,'apr':4,'may':5} # and the rest
data = numpy.loadtxt("test.txt",dtype = dtype([('month','S4'),('WQ',float)]))

然后选择

data[data['month']=='apr']['WQ']