如何统计字典列表中含releaseDate且日期晚于指定值的ID数量
解决方案
要统计满足条件的ID数量,我们可以遍历字典列表,逐一检查每个字典是否符合要求,具体实现如下:
方法一:直接字符串比较(简洁高效)
由于你的日期格式是YYYY-MM-DD,这种格式的字符串可以直接按字典序比较大小,无需额外转换:
my_dicts = [ {"id": "1","fixVersion": "1.2.3","releaseDate": "2017-01-21"}, {"id": "2","fixVersion": "2.0", "releaseDate": "2023-01-21"}, {"id": "3","fixVersion": "2.1", "releaseDate": "2023-07-01"}, {"id": "84","changeRequests":"123"} ] count = 0 target_date = "2023-01-01" for item in my_dicts: # 同时检查是否存在releaseDate键,以及日期是否晚于目标日期 if "releaseDate" in item and item["releaseDate"] > target_date: count += 1 print(count) # 输出结果:2
方法二:使用datetime模块(更健壮)
如果需要处理不规范的日期格式,或者要进行更复杂的日期运算,可以用datetime模块解析日期后再比较,同时加入异常处理避免报错:
from datetime import datetime my_dicts = [ {"id": "1","fixVersion": "1.2.3","releaseDate": "2017-01-21"}, {"id": "2","fixVersion": "2.0", "releaseDate": "2023-01-21"}, {"id": "3","fixVersion": "2.1", "releaseDate": "2023-07-01"}, {"id": "84","changeRequests":"123"} ] count = 0 target_date = datetime(2023, 1, 1) for item in my_dicts: if "releaseDate" in item: try: # 解析日期字符串为datetime对象 release_date = datetime.strptime(item["releaseDate"], "%Y-%m-%d") if release_date > target_date: count += 1 except ValueError: # 若日期格式不正确,直接跳过该条目 continue print(count) # 输出结果:2
两种方法都能得到预期的结果2,你可以根据实际场景选择合适的实现方式。
内容的提问来源于stack exchange,提问作者xlxdxf
相关产品推荐
相关产品推荐

