2013-11-26 76 views
0

比方說,我有一個下雨日期的日期列表。如何確定列表中最頻繁的月份?

rained=["01-05-2012","05-01-2012","01-12-2012","06-14-2013"] 

日期的順序是月份,日期,年份。從列表中可以看出,在這些日期中,1月份(01)的降雨量最大。我將如何能夠爲此創建一個代碼?

+0

在哪個基礎上,你可以說「它在一月(01)下雨最多」? – Nilesh

+0

@NileshG該列表大概(只)包含下雨的日子。 – user2864740

+0

因爲big-endian或little-endian日期不夠選擇 –

回答

0

使用split()函數通過符號' - '拆分列表中的每個項目,然後分析您可以得到答案的月份。

+0

假設我從'months_rained = [1,5,1,6]'開始,如何分析? (這個問題應該刷新出來,也許用一些演示代碼。) – user2864740

+0

做一個字典,關鍵是月,價值是下雨的時間,迭代monthRaines然後得到最大的價值,關鍵是回答 –

+0

@ user2864740,那更容易。只要使用'計數器(months_rained)' –

4

使用collections.Counter

>>> rained=["01-05-2012","05-01-2012","01-12-2012","06-14-2013"] 
>>> from collections import Counter 
>>> Counter(x[:2] for x in rained).most_common()[0][0] 
'01' 

most_common()將返回該項目的元組的列表,按降序計數:

>>> Counter(x[:2] for x in rained).most_common() 
[('01', 2), ('06', 1), ('05', 1)] 
+1

我想你可以使用'x [:2]',因爲如果月份不是全部填充爲0,結果無論如何都是無稽之談 –

+0

好點,謝謝@gnibbler。更新。 –

0

如果出現平局,你可以這樣做像這樣

>>> rained=["01-05-2012", "05-01-2012", "01-12-2012", "06-14-2013"] 
>>> from collections import Counter 
>>> counts = Counter(x[:2] for x in rained).most_common() 
>>> [i for i, j in counts if j==counts[0][1]] 
['01'] 

下面是一個帶領帶的例子

>>> rained=["01-05-2012", "05-01-2012", "01-12-2012", "06-14-2013", "06-12-2013"] 
>>> counts = Counter(x[:2] for x in rained).most_common() 
>>> [i for i, j in counts if j==counts[0][1]] 
['01', '06'] 
相關問題