Python循环匹配后无法退出,需仅输出最早更新的符合条件用户
问题分析与解决
原代码错误原因
你的代码逻辑存在问题:虽然对所有last_update进行了排序,但后续循环中只要用户的last_update存在于排序后的列表中且当天可用,就会触发打印。这导致所有周二可用的用户都会被输出,而没有只保留last_update最早的那个。
正确实现步骤
- 先筛选出所有周二可用的用户
- 在筛选后的用户中,找出
last_update时间最早的用户 - 输出该用户信息
修正后的代码
import json today = 'Tuesday' with open('file.json', 'r') as file: data = json.load(file) # 筛选出周二可用的用户 available_users = [user for user in data if today in user['available_days']] # 找出last_update最早的用户(ISO时间格式字符串可直接按字典序比较) earliest_user = min(available_users, key=lambda x: x['last_update']) print(f'Today is {earliest_user["name"]} turn.')
代码说明
- 列表推导式
[user for user in data if today in user['available_days']]快速筛选出当日可用的用户,比多层循环更简洁高效。 min()函数结合key=lambda x: x['last_update']直接定位时间最早的用户,无需额外转换为datetime对象——ISO 8601格式的时间字符串本身支持字典序比较。
验证结果
运行修正后的代码,会输出预期结果:
Today is Mary turn.
内容的提问来源于stack exchange,提问作者Saeed
相关产品推荐
相关产品推荐

