Python進階(二)-初識Python資料元素:字典&時間
阿新 • • 發佈:2018-12-15
Python進階(二)-初識Python資料元素:字典&時間
3字典
3.1字典簡介
字典(dic dictionary)是除列表之外python中最靈活的內建資料結構型別。 列表是有序的物件結合,字典是無序的物件集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。 字典由鍵和對應的值組成。字典也被稱作關聯陣列或雜湊表。基本語法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};
- 1
也可如此建立字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc' : 123, 98.6: 37 };
- 1
- 2
每個鍵與值必須用冒號隔開(:),每對用逗號分割,整體放在花括號中({})。鍵必須獨一無二,但值則不必;值可以取任何資料型別,但必須是不可變的,如字串,數或元組。
3.2訪問字典裡的值
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
print "dict['name']: ", dict['name'];
print "dict['age']: ", dict['age'];
- 1
- 2
- 3
3.3修改字典
向字典新增新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對。 如下例項:
dict = {'name' : 'Zara', 'age': 7, 'class': 'First'};
dict["age"]=27; #修改已有鍵的值
dict["school"]="wutong"; #增加新的鍵/值對
print "dict['age']: ", dict['age'];
print "dict['school']: ", dict['school'];
- 1
- 2
- 3
- 4
- 5
3.4刪除字典
del dict['name']; # 刪除鍵是'name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
- 1
- 2
- 3
- 注意:字典不存在,del會引發一個異常
3.5字典內建函式&方法
cmp(dict1, dict2) #比較兩個字典元素。
len(dict) #計算字典元素個數,即鍵的總數。
str(dict) #輸出字典可列印的字串表示。
type(variable) #返回輸入的變數型別,如果變數是字典就返回字典型別。
clear() #刪除字典內所有元素
copy() #返回一個字典的淺複製
fromkeys() #建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
get(key, default=None) #返回指定鍵的值,如果值不在字典中返回default值
has_key(key) #如果鍵在字典dict裡返回true,否則返回false
items() #以列表返回可遍歷的(鍵, 值) 元組陣列
keys() #以列表返回一個字典所有的鍵
setdefault(key, default=None) #和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default
update(dict2) #把字典dict2的鍵/值對更新到dict裡
values() #以列表返回字典中的所有值
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
4日期和時間
4.1獲取當前時間
import time, datetime;
localtime = time.localtime(time.time())
print "Local current time :", localtime
- 1
- 2
- 3
說明:time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)屬於struct_time元組,struct_time元組具有如下屬性:
4.2獲取格式化的時間
可以根據需求選取各種格式,但是最簡單的獲取可讀的時間模式的函式是asctime():
4.2.1日期轉換為字串
首選:print time.strftime(‘%Y-%m-%d %H:%M:%S’); 其次:print datetime.datetime.strftime(datetime.datetime.now(), ‘%Y-%m-%d %H:%M:%S’) 最後:print str(datetime.datetime.now())[:19]
4.2.2字串轉換為日期
expire_time = "2013-05-21 09:50:35"
d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S")
print d;
- 1
- 2
- 3
4.2.3獲取日期差
oneday = datetime.timedelta(days=1)
#今天,2014-03-21
today = datetime.date.today()
#昨天,2014-03-20
yesterday = datetime.date.today() - oneday
#明天,2014-03-22
tomorrow = datetime.date.today() + oneday
#獲取今天零點的時間,2014-03-21 00:00:00
today_zero_time=datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S')
#0:00:00.001000
print datetime.timedelta(milliseconds=1), #1毫秒
#0:00:01
print datetime.timedelta(seconds=1), #1秒
#0:01:00
print datetime.timedelta(minutes=1), #1分鐘
#1:00:00
print datetime.timedelta(hours=1), #1小時
#1 day, 0:00:00
print datetime.timedelta(days=1), #1天
#7 days, 0:00:00
print datetime.timedelta(weeks=1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
4.2.4獲取時間差
#1 day, 0:00:00
oneday = datetime.timedelta(days=1)
#今天,2014-03-21 16:07:23.943000
today_time = datetime.datetime.now()
#昨天,2014-03-20 16:07:23.943000
yesterday_time = datetime.datetime.now() - oneday
#明天,2014-03-22 16:07:23.943000
tomorrow_time = datetime.datetime.now() + oneday
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意時間是浮點數,帶毫秒。 那麼要獲取當前時間,需要格式化一下:
print datetime.datetime.strftime(today_time, '%Y-%m-%d %H:%M:%S')
print datetime.datetime.strftime(yesterday_time, '%Y-%m-%d %H:%M:%S')
print datetime.datetime.strftime(tomorrow_time, '%Y-%m-%d %H:%M:%S')
- 1
- 2
- 3
4.2.5獲取上個月最後一天
last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
- 1
4.2.6字串日期格式化為秒數
返回浮點型別
expire_time = "2013-05-21 09:50:35"
d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S")
time_sec_float = time.mktime(d.timetuple())
print time_sec_float
- 1
- 2
- 3
- 4
4.2.7日期格式化為秒數
返回浮點型別
d = datetime.date.today()
time_sec_float = time.mktime(d.timetuple())
print time_sec_float
- 1
- 2
- 3
4.2.8秒數轉字串
time_sec = time.time()
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))
- 1
- 2