2012-12-02 30 views
-1

從下面的數組中,如何計算它在陣列中發生次數的日期。輸出應該採用以下格式[date,count]python count日期出現的次數

new_dates = [['2012-12-02', 14],['2012-12-03',2],....] 

輸入:

dates = [['2012-12-02', 17], ['2012-12-01', 5], ['2012-12-02', 15], ['2012-12-02', 8], ['2012-12-02', 17], ['2012-12-02', 15], ['2012-12-11', 6], ['2012-12-02', 1], ['2012-12-02', 9], ['2012-12-02', 11], ['2012-12-03', 13], ['2012-12-03', 10], ['2012-12-02', 18], ['2012-12-02', 11], ['2012-12-02', 12], ['2012-12-05', 14], ['2012-12-02', 3], ['2012-12-02', 6], ['2012-12-06', 10], ['2012-12-07', 0], ['2012-12-08', 3], ['2012-12-09', 12], ['2012-12-02', 6]] 
+0

我不明白輸入和輸出 –

+0

我要計算時間的日期已發生數之間的差異.. – Rajeev

回答

3
>>> from collections import Counter 
>>> [[k,c[k]] for k in Counter([i[0] for i in dates])] 
[['2012-12-01', 1], ['2012-12-02', 14], ['2012-12-03', 2], ['2012-12-05', 1], [' 
2012-12-06', 1], ['2012-12-07', 1], ['2012-12-08', 1], ['2012-12-09', 1], ['2012 
-12-11', 1]] 

在不能使用計數器的情況下,使用defaultdict

>>> from collections import defaultdict 
>>> d = defaultdict(int) 
>>> for i in dates: 
... d[i[0]] += 1 
... 
>>> [[k,d[k]] for k in d] 
[['2012-12-01', 1], ['2012-12-02', 14], ['2012-12-03', 2], ['2012-12-05', 1], [' 
2012-12-06', 1], ['2012-12-07', 1], ['2012-12-08', 1], ['2012-12-09', 1], ['2012 
-12-11', 1]] 
0

OK,如果不能用計數器,我建議一個循環/數的解決方案:

使用Dict.get(一),將返回None如果沒有在詞典的按鍵,並且將返回值如果在字典「一個」一鍵

>>> dates = [['2012-12-02', 17], ['2012-12-01', 5], ['2012-12-02', 15], ['2012-12-02', 8], ['2012-12-02', 17], ['2012-12-02', 15], ['2012-12-11', 6], ['2012-12-02', 1], ['2012-12-02', 9], ['2012-12-02', 11], ['2012-12-03', 13], ['2012-12-03', 10], ['2012-12-02', 18], ['2012-12-02', 11], ['2012-12-02', 12], ['2012-12-05', 14], ['2012-12-02', 3], ['2012-12-02', 6], ['2012-12-06', 10], ['2012-12-07', 0], ['2012-12-08', 3], ['2012-12-09', 12], ['2012-12-02', 6]] 
>>> dict_ = {} 
>>> for i,j in dates: 
    if dict_.get(i): 
     dict_[i] += 1 
    else: 
     dict_[i] = 1 

>>> dict_ 
{'2012-12-01': 1, '2012-12-02': 14, '2012-12-03': 2, '2012-12-05': 1, '2012-12-06': 1, '2012-12-07': 1, '2012-12-08': 1, '2012-12-09': 1, '2012-12-11': 1} 
+0

順便說一句,這是手寫'defaultdict(int)'做的方式。既然你不使用'j',你可以使用'i'然後在你的循環中下標。 –