val = dict.__getitem__(self, key) KeyError: None
时间: 2023-12-17 20:04:20 浏览: 42
这个错误通常是因为字典中没有这个键所导致的。你可以在使用 `dict[key]` 之前先检查一下这个键是否存在于字典中,例如:
```python
if key in my_dict:
val = my_dict[key]
else:
# 处理键不存在的情况
```
或者你也可以使用字典的 `get()` 方法,它可以在键不存在的情况下返回一个默认值(默认为 `None`),例如:
```python
val = my_dict.get(key)
if val is not None:
# 处理键存在的情况
else:
# 处理键不存在的情况
```
相关问题
class Stack:#堆栈 class Node: def __init__(self, val, next=None): self.val = val self.next = next def __init__(self): self.top = None def push(self, val): self.top = Stack.Node(val, self.top) def pop(self): assert self.top, 'Stack is empty' val = self.top.val self.top = self.top.next return val def peek(self): return self.top.val if self.top else None def empty(self): return self.top == None def __bool__(self): return not self.empty() def __repr__(self): if not self.top: return '' return '--> ' + ', '.join(str(x) for x in self) def __iter__(self): n = self.top while n: yield n.val n = n.next
这是一个简单的堆栈实现,使用Python语言编写。堆栈是一种常见的数据结构,它具有后进先出(LIFO)的特点。这个堆栈类包含了Node类,用于创建节点,以及push、pop、peek、empty等方法,用于操作堆栈。其中push方法用于将元素压入堆栈,pop方法用于从堆栈中弹出元素并返回,peek方法用于获取堆栈顶部的元素,empty方法用于判断堆栈是否为空。此外,还实现了__bool__和__repr__方法,用于判断堆栈是否为空,并以字符串形式表示堆栈中的元素。
def step(self, action): # 在环境中执行一个动作 assert self.action_space.contains(action) prev_val = self._get_val() self.current_step += 1 if self.current_step == len(self.data): self.done = True if self.done: reward = self.profit - self.total_reward return self._next_observation(), reward, self.done, {} self._take_action(action) reward = self._get_reward() self.total_reward += reward obs = self._next_observation() return obs, reward, self.done, {}
这段代码是 `StockTradingEnv` 类中的 `step` 方法,用于在环境中执行一个动作,并返回执行该动作后获得的奖励、新的观察值以及是否结束交易等信息。具体来说,这个方法会执行如下步骤:
1. 首先检查动作是否在动作空间中,如果不在则会报错;
2. 调用 `_get_val` 方法获取当前股票的价值(假设在当前时间步进行交易后,股票的价值不变);
3. 将当前时间步加 1,如果当前时间步已经达到数据长度,则将结束标志设为 True;
4. 如果结束标志为 True,那么计算得到最终的奖励(即当前收益减去之前的总奖励),并返回最终的观察值、奖励、结束标志和一个空字典;
5. 否则,执行动作并调用 `_get_reward` 方法获取奖励,累加到之前的总奖励中,调用 `_next_observation` 方法获取新的观察值,并返回新的观察值、奖励、结束标志和一个空字典。
总之,这个 `step` 方法可以让我们在股票交易环境中执行一个动作,并获得执行该动作后的奖励以及新的观察值,从而逐步训练出一个股票交易智能体。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)