求求各位大神告訴小白,是如何按照時間排序,并且要求一行一行讀取出來存成字典的資料結構。鍵為時間,剩下的隨便。
uj5u.com熱心網友回復:
1.將字典轉化為串列mylist=list(mydict)
2. 串列排排序
key_list=mylist.sort()
3. 在字典中查找對應的值
mydict[key_list[i]]
uj5u.com熱心網友回復:
為了方便更好的測驗,樓主把.xls檔案也發送過來吧~[email protected]
uj5u.com熱心網友回復:
'''
【特別說明】:
如果沒有xlrd模塊,需要事先在命令列安裝xlrd模塊
方法:在cmd命令列輸入:pip install xlrd
'''
import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime
def read_xls(filename):
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0) # sheet索引從0開始
list = []
for row_index in range(1, sheet.nrows): #sheet.nrows
rows = sheet.row_values(row_index) # 獲取第2行內容
list.append(rows)
return list
def create_my_dict(table_list):
records_dict = {}
for row_data in table_list:
# 格式轉換:將第0列的值轉換成datetime物件
col0 = datetime(*xldate_as_tuple(row_data[0], 0))
key = col0.strftime('%Y-%m-%d %H:%M') #取第0列
value = row_data[1:] #取第1列-第n列
records_dict.update({key:value}) #加入到字典變數中
return records_dict
def dict_sort(records_dict):
# 將字典轉換為串列
kvlist = list(records_dict.items())
# 排序
kvlist.sort()
# 將串列轉換為新字典并回傳
return dict(kvlist)
# main 執行體
if __name__ == '__main__':
# xls檔案路徑根據自己的來設定
filename = 'E:\\Users\\Administrator\\Desktop\\csdn.xls'
xls_list = read_xls(filename)
records_dict = create_my_dict(xls_list)
print("排序前的字典資料是:\n{}".format(records_dict))
new_dict = dict_sort(records_dict)
print("\n排序后的字典資料是:\n{}".format(new_dict))
uj5u.com熱心網友回復:
稍微小小改動了些,以這個為準:
'''
【特別說明】:
如果沒有xlrd模塊,需要事先在命令列安裝xlrd模塊
方法:在cmd命令列輸入:pip install xlrd
'''
import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime
def read_xls(filename):
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0) # sheet索引從0開始
xls_list = []
for row_index in range(1, sheet.nrows): # 不讀取表頭
rows = sheet.row_values(row_index) # 所以從第2行內容開始獲取
xls_list.append(rows)
return xls_list
def create_my_dict(table_list):
records_dict = {}
for row_data in table_list:
# 格式轉換:將第0列的值轉換成datetime物件
col0 = datetime(*xldate_as_tuple(row_data[0], 0))
key = col0.strftime('%Y-%m-%d %H:%M') #取第0列
value = row_data[1:] #取第1列-第n列
records_dict.update({key:value}) #加入到字典變數中
return records_dict
def dict_sort(records_dict, sort_reverse=False):
'''
:param records_dict:
:param sort_reverse: 默認引數(默認值為False)
:return:
'''
# 將字典轉換為串列
kvlist = list(records_dict.items())
# 排序
kvlist.sort(reverse=sort_reverse)
# 將串列轉換為新字典并回傳
return dict(kvlist)
# main 執行體
if __name__ == '__main__':
# xls檔案路徑根據自己的來設定
filename = 'C:\\Users\\Administrator\\Desktop\\Book1.xls'
xls_list = read_xls(filename)
records_dict = create_my_dict(xls_list)
print("排序前的字典資料是:\n{}".format(records_dict))
new_dict = dict_sort(records_dict)
# new_dict = dict_sort(records_dict, True) # 如此呼叫則為倒序
print("\n排序后的字典資料是:\n{}".format(new_dict))
uj5u.com熱心網友回復:
太感謝了,很詳細,我還想問問,如果我要是按時間每隔五分鐘提取一行數,應該怎么操作?uj5u.com熱心網友回復:
那就匯入time模塊
import time
然后在需要時間間隔的地方呼叫
time.sleep(5*60)
uj5u.com熱心網友回復:
那接下來的回圈要怎么做呢?我想按這個表格,每五分鐘回圈一次資料uj5u.com熱心網友回復:
那接下來的回圈要怎么做呢?我想按這個表格,每五分鐘回圈一次資料
太感謝了,很詳細,我還想問問,如果我要是按時間每隔五分鐘提取一行數,應該怎么操作?
那就匯入time模塊
import time
然后在需要時間間隔的地方呼叫
time.sleep(5*60)
你在5樓說要每5分鐘提取一行資料,在7樓又說每5分鐘回圈一次資料? 把你的目的說詳細一點,盡量別有歧義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/93754.html
上一篇:請大神幫忙看看咋會事
