標籤:字典-映像 python
字典
一、字典的概述
字典是python中唯一的映射類型,映射類型對象裡雜湊值和指向對象值是1:n的關係
字典對象是可變的,可以認為是一個容器類型,能儲存任意個python對象
字典對象和序列對象的區別:
1.儲存和訪問資料的方式不同
2.映射類型的資料是無序排序
3.序列類型只能是數字類型的鍵,映射類型可以是其他類型的鍵
4.映射類型不要求用數字值做索引從一個容器中取對應的資料。可以用鍵直接映射到值
(1).字典的建立和賦值
建立字典只需要把一個字典賦值給一個變數
如:dict={‘name’:’earth’,’port’:80}
2.可用Factory 方法dict()建立
如:fdict=dict(([‘x’,’1’],[‘y’,2]))
3.可用fromkeys()建立一個預設的字典
如:ddict ={}.fromkeys((‘x’,’y’),-1)
(2):字典的訪問
1.迴圈其索引值。如:
for key in dict.keys():
print ‘key=%s,value=%s’ %(key,dict[key])
2.用迭代器遍曆字典,只需要知道字典的名字即可,如
dict={‘name’:’zhang’,’port’:80}
for key in dict:
print ‘key=%s,value=%s’ %(key,dict[key])
3.獲得字典的某個元素值
dict[key] 如:dict[name]=’zhang’
若需檢查字典是否有某一個key 可以用in 或not in 等
(3):字典的更新
1.添加一個新資料項目或新元素
可以用字典變數名[key]=value;如 test={age:20.} test[name] =’student’ 則可得到tet={age:20,name:’student’}
2.改變一個已存在的資料項目
字典的修改和添加類似,可以用字典變數名[key]=新value
3.刪除一個已存在的資料項目
del dict[key]:刪除對應的索引值,若用字典變數名則刪除整個字典.如 del dict
dict.clear() :清空字典內容
pop():刪除對對應的值
二、映射類型操作符
(1).字典的鍵尋找操作符[]
1.鍵尋找操作符是唯一用於字典類型的操作符,和序列中的單一元素切片相似
2.字典是用鍵查詢,序列用索引做唯一參數或下標擷取
(2).成員關係操作(in not in)
in 和not in 檢查某個鍵是否在字典中
如:name in dict
三、內建函數和工廠函數
(1).標準類型函數
cmp()
type()
str(0
(2).映射相關函數
dict():用於建立字典,若不提供參數,則會產生空字典。
如 dict(zip((‘x’,’y’),(1,2))) => {‘x’:1,’y’:2}
或者 dict([‘x’,1],[‘y’,2]) => {‘x’:1,’y’:2}
len():返回所有元素的數目
如 dict={‘x’:1,’y’:2} 則len(dict)=2
hash()’
(3):內建方法
1.keys():返回一個列表包含字典所有的鍵 dict.keys() =>[‘x’,’y’]
2.values():返回一個列表,包含字典所有的值 如dict.values => [1,2]
3.items():返回一個列表包含所有含有(鍵,值)的元組 如dict.items() => [(‘x’,1),(‘y’,2)]
4.update() 如dict.update(dict2) 將字典dict2的key-value添加到字典dict 如dict2={‘x’:1,’y’:2,’z’:3} dict.update(dict2)
=> {‘x’:1,’y’:2,’z’:3}
5.setdefault() 和set()類似,若字典不存在key 由dict[key]=default為它賦值
6.clear() 刪除字典中所有元素 如 dict.clear() => {}
7.copy() 返回一個字典的副本 如dict2=dict.copy() => {‘x’:1,’y’:2}
四、字典的鍵
字典的鍵必須是不可變資料類型,如果用元組做鍵,那必須要保證元組內的對像也是不可變類型。可變資料類型對像不能做鍵。
集合
一、集合類型
set是不同元素組成的集合,python中的集合對象是一組無序排列的可hash的值。
集合分為兩種類型.可變集合(set)和不可變集合(frozenset)。可變集合可以刪除或添加元素,不可變集合不充許;可變集合不是可 雜湊的 不能用作字典的鍵,也不能用作其他集合中的元素,不可變集合真好相反
(1)、集合的建立
主要有set()和frozenset()方法
如:s=set(‘abcd’) => set([‘a’,’b’,’c’,’d’]); frozenset(‘BOOK’) =>frozenset([‘B’,’O’,’O’,’K’])
(2).集合的訪問
可以遍曆和檢查某項元素是否是一個集合的元素
如: ‘K’ in s
(3).更新集合
可以用集合內建方法進行添加,刪除集合的成員
如:
s.add(‘z’)
s.update(‘pypj’)
s-=set(‘pypj’)
s.remove()
(4).如何刪除集合中的成員和集合
A.集合超出其作用範圍
B.調用del將他們直接清除當前的名稱空間
二、集合類型操作符
set集合是無序的,不能通過索引和切片來做一些操作
三、內建函數和內建方法
(1).內建函數:
len():返回集合的基數
set()和frozenset()返回可變集合和不可變集合 若不提供參數則會產生空集合
(2).內建方法:可分為適用於所有的集合方法和適用於可變集合的方法
1.僅適用於可變集合的如下:
s.update(t) s.add(obj) s.remove(obj) s.discard(obj) s.pop():刪除集合s中的任意一個對象
s.clear() 刪除集合s中的所有元素
本節例子實現:
該例子用於類比管理登入系統
#!/usr/bin/env python#-*-coding:utf-8 -*-db = {}def newuser(): prompt = ‘login desired‘ while True: name = raw_input(prompt) if db.has_key(name): prompt = ‘name taken, try anothers‘ continue else: break pwd = raw_input(‘password:‘) db[name] = pwddef olduser(): name = raw_input(‘login: ‘) pwd = raw_input(‘passwd: ‘) passwd = db.get(name) if passwd == pwd: print ‘welcome back‘,name else: print ‘login incorrect‘def showmenu(): prompt = ‘‘‘(N)ew User Login(E)xisting User Login(Q)uitEnter choice:‘‘‘ done = False while not done: chosen = False while not chosen: try: choice = raw_input(prompt).strip()[0].lower() except (EOFError, KeyboardInterrupt): choice = ‘q‘ print ‘\nyou picked:[%s]‘ %choice if choice not in ‘neq‘: print ‘invalid option, try again‘ else: chosen = True if choice == ‘q‘ :done = True if choice == ‘n‘ :newuser() if choice == ‘e‘ :olduser()if __name__ == ‘__main__‘: showmenu()
python映像和集合類型