因此,我有一些來自Mongo的預計算值(按商店計算的產品的平均價格)列表。每個列表代表一個星期與不同的產品。這些清單的大小可能不同,因爲有時產品在一週內不會銷售。按店鋪平均分的子列表在兩個不同的星期之間也可以是不同的大小,因爲某些店鋪可能缺貨(因此沒有任何此產品的價格)。在Python中對不同長度的多個列表進行平均的最快方法
有沒有辦法獲得我的結果,而沒有做很多循環?
這裏是兩個星期澄清的例子:
Week1
[{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}]}]
Week2
[{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循環有什麼問題? –
如果產品在兩週內出現('_id'出現在兩個列表中),如果來自同一家商店,我需要平均價格('平均值')(=如果相同'avgByS.S')。如果對於一種產品,我在一週內有兩家商店的價格,第二週期間有一家商店的價格(這家商店也在前一週),這個價格在兩週內取平均值。另一個保持不變(在這個例子中不是2)。 –
for循環的問題是我有成千上萬的產品,最終的計算不一定在兩週內完成,但可能從一週到很多(最可能在52/53之間,等於一年)。因此,它很慢,許多imbricated循環 –