首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从包含日期和列表中其他字符串的字符串列表中解析月份?

如何从包含日期和列表中其他字符串的字符串列表中解析月份?
EN

Stack Overflow用户
提问于 2018-10-08 14:11:18
回答 3查看 58关注 0票数 1

我有名单

代码语言:javascript
复制
list1 = [['0', '2015-12-27', '64236.62'], 
         ['1', '2015-12-12', '65236.12'], 
         ... ]

这份清单包含2015年至2018年的数据,如何计算每个月的价值?因此,我想创建一个字典,每个月的数据,在一定的一年。

我试过这样做:

代码语言:javascript
复制
import re
years_month_count = {}
for i in list1:
    match = re.search("[2][0][1][5-8]-[0-9][0-9]", i[1])
    if match not in years_month_count:
        years_month_count[match] = 0
    else:
        years_month_count[match] += float(i[2])
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-08 14:19:13

使用str.rsplitcollections.defaultdict,您可以执行以下操作:

代码语言:javascript
复制
from collections import defaultdict

list1 = [['0', '2015-12-27', '64236.62'], 
         ['1', '2015-11-12', '65236.12'], 
         ['2', '2015-12-27', '64236.62']]

d = defaultdict(float)
for x in list1:
    d[x[1].rsplit('-', 1)[0]] += float(x[2])

输出将是类似于dict的:

代码语言:javascript
复制
{'2015-12': 128473.24, '2015-11': 65236.12}
票数 1
EN

Stack Overflow用户

发布于 2018-10-08 14:30:02

您不应该使用else子句,因为您总是希望添加值,即使是在一个月的第一项。

另外,您不需要正则表达式。如果所有的数据存储都是格式良好的,您可以简单地使用字符串切片。

代码语言:javascript
复制
years_month_count = {}

for _, date, value in list1:
    month = date[:7]
    years_month_count[month] = float(value) + years_month_count.get(month, 0)
票数 0
EN

Stack Overflow用户

发布于 2018-10-08 14:57:27

  1. 创建字典并将其初始化为0 D= {i:0在范围内(1,13)}
  2. 循环遍历列表,拆分字符串以获得月份,并向字典添加值。 对于list1中的l: splt = l1.split("-") d[int(splt1)] += float(l2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52704172

复制
相关文章

相似问题

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