首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据字典中的键提取值

根据字典中的键提取值
EN

Stack Overflow用户
提问于 2014-09-23 15:06:40
回答 1查看 90关注 0票数 1

我有两个列的文本文件: 1)列1是yyyy dd格式,2列是沉淀。

目的:仅从第2列提取4、5、6、7、8月份(4、5、6、7、8)的降水原值。

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

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

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

代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-09-23 15:46:15

一个更明显的结构是一本清单字典:

代码语言:javascript
复制
data = collections.defaultdict()

在循环中

代码语言:javascript
复制
data.setdefault( month,[]).append( WQ )

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

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

代码语言:javascript
复制
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)]))

然后选择

代码语言:javascript
复制
data[data['month']=='apr']['WQ']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25998539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档