1. 程式人生 > >Python進階(二)-初識Python資料元素:字典&時間

Python進階(二)-初識Python資料元素:字典&時間

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
這裡寫圖片描述 這裡寫圖片描述