我試圖從列表中獲取列表中的日期和數字列表,並從電子表格中拉出,並創建一個字典列表,其中每個條目是開始日期,停止日期和價值。樣本數據是這樣的:從列表中創建圖表數據(帶有開始/停止日期)
d = [[datetime.datetime(2016, 11, 1, 0, 0), 50L],
[datetime.datetime(2016, 11, 2, 0, 0), 50L],
[datetime.datetime(2016, 11, 2, 0, 0), 50L],
[datetime.datetime(2016, 11, 2, 0, 0), 23L],
[datetime.datetime(2016, 11, 2, 0, 0), 23L],
[datetime.datetime(2016, 11, 2, 0, 0), 23L],
[datetime.datetime(2016, 11, 7, 0, 0), 23L],
[datetime.datetime(2016, 11, 8, 0, 0), 23L],
[datetime.datetime(2016, 11, 9, 0, 0), 23L],
[datetime.datetime(2016, 11, 9, 0, 0), 23L],
[datetime.datetime(2016, 11, 9, 0, 0), 66L],
[datetime.datetime(2016, 11, 9, 0, 0), 66L],
[datetime.datetime(2016, 11, 13, 0, 0), 50L],
[datetime.datetime(2016, 11, 14, 0, 0), 50L],
[datetime.datetime(2016, 11, 15, 0, 0), 100L],
[datetime.datetime(2016, 11, 16, 0, 0), 100L],
[datetime.datetime(2016, 11, 17, 0, 0), 100L],
[datetime.datetime(2016, 11, 17, 0, 0), 100L],
[datetime.datetime(2016, 11, 17, 0, 0), 100L],
[datetime.datetime(2016, 11, 20, 0, 0), 100L],
[datetime.datetime(2016, 11, 21, 0, 0), 100L],
[datetime.datetime(2016, 11, 21, 0, 0), 100L],
[datetime.datetime(2016, 11, 23, 0, 0), 50L]]
我需要什麼(用於日後轉換爲甘特圖)是這樣的輸出:
{'start': '11/01/2016', 'end': '11/02/2016', 'IP': '50'}
{'start': '11/02/2016', 'end': '11/09/2016', 'IP': '23'}
{'start': '11/09/2016', 'end': '11/09/2016', 'IP': '66'}
{'start': '11/13/2016', 'end': '11/14/2016', 'IP': '50'}
{'start': '11/15/2016', 'end': '11/21/2016', 'IP': '100'}
{'start': '11/23/2016', 'end': '11/24/2016', 'IP': '50'}
我越來越近,但我想不通了解如何包含最後一個值(是的,它們是IP地址,爲了便於閱讀,在我的測試集中縮短了)。我目前的代碼也會混淆最後一個項目的日期。
這裏就是我得到:
{'start': '11/01/2016', 'end': '11/02/2016', 'IP': '50'}
{'start': '11/02/2016', 'end': '11/09/2016', 'IP': '23'}
{'start': '11/09/2016', 'end': '11/09/2016', 'IP': '66'}
{'start': '11/14/2016', 'end': '11/14/2016', 'IP': '50'}
{'start': '11/16/2016', 'end': '11/21/2016', 'IP': '100'}
這裏是我到目前爲止的代碼:
df = []
fmtD = '%m/%d/%Y'
dates = []
lastIP = 0
for x in range(len(d)):
ipAdd = d[x][1]
if ipAdd == lastIP or x == 0:
dates.append(d[x][0])
elif ipAdd != lastIP:
df.append(dict(IP = str(lastIP),\
start=min(dates).strftime(fmtD),\
end = max(dates).strftime(fmtD)))
dates = []
elif x == len(d):
df.append(dict(IP = str(lastIP),\
start=min(dates).strftime(fmtD),\
end = max(dates).strftime(fmtD)))
lastIP = ipAdd
for item in df:
print item
你得到什麼輸出?表明這一點,以便我們能夠理解你的期望和你得到的東西! –
謝謝。添加了當前輸出。 – bgrundy