You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将年度季度数组转换为年份(全季度存在时),否则保留原季度数据

解决季度数组的年份合并需求

没问题,咱们一步步来搞定这个需求——当某一年的四个季度数据全齐时,把这四个季度项替换成单一的年份值;如果季度不全,就保留原有的季度条目。

实现思路

  • 拆分季度与年份:把每个输入字符串拆成季度段(比如1Q)和年份段(比如2017),方便后续统计。
  • 统计年份的季度覆盖:用字典记录每个年份对应的所有季度,再检查哪些年份包含了1Q、2Q、3Q、4Q全部四个季度。
  • 生成最终结果:遍历原数组,对于完整年份的条目,只添加一次年份值(避免重复);非完整年份的条目直接保留原内容。

Python代码实现

def merge_full_year_quarters(quarter_list):
    # 统计每个年份对应的季度集合
    year_quarter_map = {}
    for item in quarter_list:
        # 拆分:比如'1Q2017' → 季度'1Q',年份'2017'
        quarter_part = item[:2]
        year_part = item[2:]
        if year_part not in year_quarter_map:
            year_quarter_map[year_part] = set()
        year_quarter_map[year_part].add(quarter_part)
    
    # 筛选出季度全齐的年份
    complete_years = {year for year, quarters in year_quarter_map.items() 
                      if quarters == {'1Q', '2Q', '3Q', '4Q'}}
    
    # 生成结果数组,去重完整年份的条目
    result = []
    added_years = set()
    for item in quarter_list:
        current_year = item[2:]
        if current_year in complete_years:
            if current_year not in added_years:
                result.append(current_year)
                added_years.add(current_year)
        else:
            result.append(item)
    return result

# 测试示例输入
input_array = ['1Q2017', '2Q2017', '3Q2017', '4Q2017', '1Q2018', '2Q2018', '3Q2018']
output_array = merge_full_year_quarters(input_array)
print(output_array)  # 输出: ['2017', '1Q2018', '2Q2018', '3Q2018']

代码说明

  • 统计环节:用集合存储每个年份的季度,是因为集合的成员检查效率高,而且自动去重(避免重复统计同一个季度)。
  • 去重处理:用added_years集合记录已经添加过的完整年份,确保每个完整年份只在结果中出现一次。
  • 顺序保留:遍历原数组生成结果,除了合并的年份项只保留第一个出现的那次,其他非完整年份的条目顺序和原数组一致。

如果用其他编程语言,核心思路也是一样的:先统计各年份的季度覆盖情况,再根据情况替换或保留条目。

内容的提问来源于stack exchange,提问作者SO19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:00:33