python - 我正在做很多列表和字典排序......这导致 Python 网站出现内存错误

标签 python optimization list dictionary performance

我从数据库的日志表中检索了数据。然后我开始寻找独特的用户、比较/排序列表等。

最后我决定这样做。

stats = {'2010-03-19': {'date': '2010-03-19', 'unique_users': 312, 'queries': 1465}, '2010-03-18': {'date': '2010-03-18', 'unique_users': 329, 'queries': 1659}, '2010-03-17': {'date': '2010-03-17', 'unique_users': 379, 'queries': 1845}, '2010-03-16': {'date': '2010-03-16', 'unique_users': 434, 'queries': 2336}, '2010-03-15': {'date': '2010-03-15', 'unique_users': 390, 'queries': 2138}, '2010-03-14': {'date': '2010-03-14', 'unique_users': 460, 'queries': 2221}, '2010-03-13': {'date': '2010-03-13', 'unique_users': 507, 'queries': 2242}, '2010-03-12': {'date': '2010-03-12', 'unique_users': 629, 'queries': 3523}, '2010-03-11': {'date': '2010-03-11', 'unique_users': 811, 'queries': 4274}, '2010-03-10': {'date': '2010-03-10', 'unique_users': 171, 'queries': 1297}, '2010-03-26': {'date': '2010-03-26', 'unique_users': 299, 'queries': 1617}, '2010-03-27': {'date': '2010-03-27', 'unique_users': 323, 'queries': 1310}, '2010-03-24': {'date': '2010-03-24', 'unique_users': 352, 'queries': 2112}, '2010-03-25': {'date': '2010-03-25', 'unique_users': 330, 'queries': 1290}, '2010-03-22': {'date': '2010-03-22', 'unique_users': 329, 'queries': 1798}, '2010-03-23': {'date': '2010-03-23', 'unique_users': 329, 'queries': 1857}, '2010-03-20': {'date': '2010-03-20', 'unique_users': 368, 'queries': 1693}, '2010-03-21': {'date': '2010-03-21', 'unique_users': 329, 'queries': 1511}, '2010-03-29': {'date': '2010-03-29', 'unique_users': 325, 'queries': 1718}, '2010-03-28': {'date': '2010-03-28', 'unique_users': 340, 'queries': 1815}, '2010-03-30': {'date': '2010-03-30', 'unique_users': 329, 'queries': 1891}}

这不是一本大词典。但是,当我尝试做最后一件事时……它让我大吃一惊。

 for k, v in stats:
    mylist.append(v)

要解压的值太多

这到底是什么意思???太多的值(value)无法解包。

最佳答案

如果你只想要你可以做的值:

mylist = stats.values()

如果您需要键值对,您应该迭代字典的:

mylist = []
for k,v in stats.iteritems():
    mylist.append(v)

在您问题的代码中,您只是在迭代字典

由于您将单个字符串(键)分配给元组 (k,v),因此它的字符会被迭代;合乎逻辑的是,不能将这个完整的字符串解压缩到 (k,v) 元组中,除非您的字符串长度恰好为 2。这解释了错误消息:您正在尝试将字符串的每个字符解压缩为仅两个占位符(k 和 v)。

关于python - 我正在做很多列表和字典排序......这导致 Python 网站出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2569677/

相关文章:

python - PyQt5中QUdpSocket没有writeDatagram()函数?

python - 将图例添加到具有二进制数据的 numpy 数组的 matplotlib 图

可以在用户空间代码中使用 likely/unlikely 宏吗?

python - 加速简单的多维计数器代码

arrays - lisp 减少堆(数组与列表)

python - OpenCV - 如何在轮廓内画一条线?

python - 显示两个数据框列中两个字符串之间的差异的位置,pandas

c# - 避免将 `in` 与结构一起使用而不会使结构成为只读而降低性能?

java - 在 Java 类中创建对象列表 - 更好的方法

python - Python中的交错列表