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

如何在字典中结合Timestamp使用if-else并正确输出单次Yes?

问题分析与解决方案

问题原因

  1. 类型不匹配导致判断错误:字典中存储的是Timestamp对象,你直接和字符串'2022-05-01 00:00:00'比较,两者类型不同,结果永远是False,所以触发了elif分支输出Maybe。
  2. 遍历全字典导致重复输出:循环会遍历字典的每一个键值对,每个键都会执行一次输出逻辑,因此会出现多次输出。

修改方案

方案1:直接通过键查找(推荐,更高效)

利用字典的键查找特性,无需遍历整个字典,直接判断输入的键是否存在,再对比时间:

from pandas import Timestamp  # 确保导入Timestamp类

fruit_dict = {'Lemon': Timestamp('2022-05-01 00:00:00'), 'Orange': Timestamp('2020-09-06 00:00:00')}
input_fruit = 'Lemon'  # 注意加引号,用字符串表示输入的键
target_time = Timestamp('2022-05-01 00:00:00')  # 转为同类型的Timestamp再比较

if input_fruit in fruit_dict:
    if fruit_dict[input_fruit] == target_time:
        print('Yes')
    else:
        print('Maybe')
else:
    print('No')

方案2:遍历字典但找到匹配后终止循环

如果一定要用遍历,找到匹配的键后用break终止循环,避免后续不必要的遍历和输出:

from pandas import Timestamp

fruit_dict = {'Lemon': Timestamp('2022-05-01 00:00:00'), 'Orange': Timestamp('2020-09-06 00:00:00')}
input_fruit = 'Lemon'
target_time = Timestamp('2022-05-01 00:00:00')

found = False
for k, v in fruit_dict.items():
    if input_fruit == k:
        found = True
        if v == target_time:
            print('Yes')
        else:
            print('Maybe')
        break  # 找到匹配键后立刻终止循环
if not found:
    print('No')

关键修改点说明

  • 修正输入写法:把input = Lemon改成input_fruit = 'Lemon',原代码中Lemon无引号会被当作变量,引发NameError,必须用字符串表示键。
  • 统一时间类型:将目标时间转为Timestamp对象,和字典中的值类型一致后再比较,确保判断准确。
  • 避免重复输出:要么直接按键查找,要么找到匹配后终止循环,保证只输出一次结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:54:19