所以我有一些来自Mongo的清单,上面有预先计算的值(按商店的产品平均价格)。每一张单子代表一周的不同产品。清单的大小可能不同,因为有时一个产品在一周内没有售出。商店平均价格的子列表在两个不同的星期内也可能有不同的大小,因为有些商店可能缺货(因此没有此产品的任何价格)。你知道吗
有没有一种方法可以在不生成许多for循环的情况下获得我的结果?你知道吗
下面是一个需要两周时间澄清的例子:
第1周
[{u'_id': 193390, u'avgT': 12, u'avgByS': [{u'S': 7, u'avg': 12}]}, {u'_id': 193396, u'avgT': 29, u'avgByS': [{u'S': 7, u'avg': 29}, {u'S': 5, u'avg': 29}]}]
第2周
[{u'_id': 193390, u'avgT': 11, u'avgByS': [{u'S': 7, u'avg': 10}, {u'S': 9, u'avg': 12}]}, {u'_id': 193398, u'avgT': 15, u'avgByS': [{u'S': 7, u'avg': 29}, {u'S': 5, u'avg': 29}]},{u'_id': 193396, u'avgT': 29, u'avgByS': [{u'S': 7, u'avg': 29}, {u'S': 5, u'avg': 29}]}]
期望输出
[{u'_id': 193390, u'avgT': 11.5, u'avgByS': [{u'S': 7, u'avg': 11}, {u'S': 9, u'avg': 12}]}, {u'_id': 193398, u'avgT': 15, u'avgByS': [{u'S': 7, u'avg': 29}, {u'S': 5, u'avg': 29}]},{u'_id': 193396, u'avgT': 29, u'avgByS': [{u'S': 7, u'average': 29}, {u'S': 5, u'average': 29}]}]
不是。您的数据结构是列表中的列表。如果没有。。。迭代。你知道吗
但是嵌套for循环并不总是一个坏主意!一些嵌套for循环导致O(N^2)行为,但是一些嵌套for循环导致O(N)行为,这取决于实际代码。你知道吗
这里有一种计算数据的方法。注意,它有三个嵌套for循环。你无法避免。但是没有一个嵌套循环导致多项式复杂性。我对big-O有些生疏,但是我声明下面程序中的聚合循环以O(N)运行,其中N是
avgByS
列表中的值的总数。(第二个循环的复杂度将与第一个循环相同,但我对结果调用sorted()
)。这可能会减慢速度。)相关问题 更多 >
编程相关推荐