的列表中的一個通我在Python字典的列表。列表中的每個元素都對應一天,並且字典中的每個元素都有關於用戶逐分鐘活動的信息。不同的櫃檯類型的字典
例子:
list_of_dicts = [
{u'activity':
{u'values': [
[1407729600, 3.0],
[1407729660, 2.0],
[1407729720, 2.0],
[1407729780, 3.0],
[1407729840, 1.0],
[1407729900, 4.0],
[1407729960, 2.0],
[1407730020, 5.0],
[1407730080, 6.0],
[1407730140, 2.0],
[1407730200, 1.0],
[1407730260, 2.0],
[1407730320, 1.0],
[1407730380, 2.0],
[1407730440, 1.0]]}},
{u'activity':
{u'values': [
[1407788340, 2.0],
[1407788400, 2.0],
[1407788460, 3.0],
[1407788520, 2.0],
[1407788580, 2.0],
[1407788640, 2.0],
[1407788700, 2.0],
[1407788760, 2.0],
[1407788820, 2.0],
[1407788880, 3.0],
[1407788940, 2.0],
[1407789000, 3.0],
[1407789060, 2.0],
[1407789120, 3.0],
[1407789180, 3.0],
[1407789240, 2.0],
[1407789300, 3.0],
[1407789360, 3.0],
[1407789420, 2.0],
[1407789480, 3.0],
[1407789540, 2.0]]}}]
現在,我想有不同的數據集合。例如,我想要計算一週中每天每小時的活動次數。這個我可以用下面的代碼做:
c = Counter()
step_values_unlist = list(itertools.chain.from_iterable(
[d['activity']['values']
for d in list_of_dicts]))
week_hour_dict = [{(time.gmtime(x[0])[3], time.gmtime(x[0])[6]):x[1]}
for x in step_values_unlist]
for d in week_hour_dict:
c.update(d)
雖然這是確定的,我需要做其他聚合也,因爲這是一個特徵向量生成用於後續ML步驟的一部分。舉個例子,我想通過再次讀字典的名單一個新的計數器有周數與活動在所有七天等,這些也可以通過各種計數器單獨完成。然而,這將是耗時的,因爲詞典列表大,這是運行(通過PySpark)爲100萬級+的用戶。我們最好不要多次閱讀這個龐大的詞典列表。有沒有一種方法可以在單一的口令列表中計算這些度量值?
您可以編寫接受一本字典,對值進行操作,並返回一個元組或你想要的聚合一個namedtuple的功能? – wwii