当if语句不满足时Python条件无法到达else语句

问题描述 投票:0回答:1
try:
            symbol = input("Specify symbol: ").upper()
            dt_string = input("Specify datetime in isoformat (e.g.'2021-05-27T03:30:00+00:00'): ")
            try:
                dt = datetime.fromisoformat(dt_string)
            except Exception as e:
                print(e)
            ts = Decimal(input("Specify ticksize after: "))
        except Exception as e:
            print(e)
        else:
            with open(join(file_directory, "ticksize_changes.json"), "r") as f:
                ts_dict = json.load(f)
                print(ts_dict)
                if ts_dict[symbol]: # if symbol exists in json file
                    ts_dict[symbol].append({'datetime': dt_string, 'ts_after': ts})
                else:
                    ts_dict[symbol] = [{'datetime': dt_string, 'ts_after': ts}]
            with open(join(file_directory, "ticksize_changes.json"), "w") as f:
                json.dump(ts_dict, f, default=str)

我有一个 try- except-else 结构,在 else 中,我有一个 with 语句。在 with 语句中,我有一个简单的 if-else。我尝试了 if 语句成功执行的情况,但是当我尝试了应该到达 else 语句的情况时,我收到以下错误:

控制台消息是正确的——确实不存在这样的密钥。但为什么else语句执行失败呢?

python conditional-statements try-except contextmanager
1个回答
0
投票

你应该使用这个语句,首先确保包含它的字典键。

if symbol in ts_dict.keys(): # if symbol exists in json file
    ts_dict[symbol].append({'datetime': dt_string, 'ts_after': ts})
else:
    ts_dict[symbol] = [{'datetime': dt_string, 'ts_after': ts}]
© www.soinside.com 2019 - 2024. All rights reserved.