如何在python中实现一个自定义的列表或字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中实现一个自定义的列表或字典相关的知识,希望对你有一定的参考价值。

参考技术A

在很多的python库之中,我们可以看到有的时候,库作者会使用一些很特殊的“列表”或者“字典”。虽然他们看起来很像是一个列表或者字典,但是使用的方法却又不一样,这是因为那不是真的python中原本的列表和字典,而是作者自己创建的。那么,我们如何可以创建我们自己的列表和字典呢?

前后都使用两个下划线的方法,一般被称之为魔法方法,比如我们常见的 init ,就是一种魔法方法。一般来说,我们自行定义变量名的时候,不要定义很像是魔法方法的变量名。魔法方法被定义后,可以在适当的时候自动被调用,一般不需要手动对其进行调用。

在python中,实现一个序列,我们需要以下四种魔法方法

另外,一般来说,错误的键应当引发TypeError异常,而错误的索引应当引发IndexError异常

在python的列表中,只能够使用数字作为索引,如果使用字符串的数字的话,那么会引发异常。因此,我们可以尝试一下,对原始的列表进行扩充,使其可以接受字符串作为列表的索引。

注意,这样的自建列表,存在很多问题,几乎全部的关于列表的方法都不能再被使用了。

为了解决正常列表的方法不能再被使用,我们可以考虑直接继承list,以此得到普通列表的所有方法。

如何在 Python 中实现向量自回归?

【中文标题】如何在 Python 中实现向量自回归?【英文标题】:How to implement Vector Auto-Regression in Python? 【发布时间】:2013-08-23 07:28:00 【问题描述】:

我想在python中实现向量自回归。我的数据保存为 3 个列表的列表。我找到了这个 - http://statsmodels.sourceforge.net/stable/vector_ar.html#var,但想不出正确的实现方式。

假设 tsdata - 一个包含 3 个长度为 100 的列表的列表,是我的数据。我试过了

varmodel = ts.VAR(tsdata)

results = varmodel.fit(maxlags=5, ic='aic')

但上述方法不起作用。

更新: 根据以下建议,我已将列表列表更改为列堆栈。现在工作正常。所以 tsdata,它是一个列表列表被更改为

tsdata  = np.column_stack(tsdata)

【问题讨论】:

请详细说明“它不起作用”。当我执行VAR(data_as_lists).fit(maxlags=5, ic='aic').summary() 时,我得到了输出——不清楚所说的输出是否合理。即使这样,您的数据也应该是带有 DatetimeIndex 的 pandas DataFrame。 我的猜测是,当列表转换为数组时,列表的形状错误,变量在行中,观察在列中。在列表列表中尝试 np.column_stack 您的代码中的tsdata 在哪里?你在问题中提到它,但我看到的只是resid 代码中也应该是tsdata。更正了错字。将尝试 np.column_stack。 菲利普,感谢您的建议。它奏效了。 【参考方案1】:

将列表列表更改为列堆栈 (as @Josef suggests) 可能会解决您的问题。为此,可以使用numpy.column_stack 如下

tsdata  = np.column_stack(tsdata)

【讨论】:

以上是关于如何在python中实现一个自定义的列表或字典的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中实现向量自回归?

如何在Angular 8中实现@提及自定义下拉菜单

如何在表格视图单元格中快速自定义和实现滑块

HBuilderX 开发工具中实现自定义生成代码块的功能

如何在自定义 delphi 组件中实现 stringlist 属性?

在下面所述的代码中实现错误处理时需要帮助[重复]