以前基礎篇博客中只是總結了一下字典的基本用法,這裏對字典功能進行一些補充,畢竟做爲使用頻率較高的數據類型,仍是要重點掌握的。廢話很少說,上重點:python
一、字典是python中惟一內建的映射類型。(經過名字引用值的數據結構稱爲映射)數據結構
二、字典中的鍵是惟一的函數
三、dict()內建函數,參數能夠是鍵與值的序列,能夠是關鍵字參數,也能夠是其餘的映射。若是不給dict提供參數,則會返回一個空字典(a=dict()-->a={})。ui
#經過向dict函數傳遞參數來建立字典spa
tina=dict(height=165,weight=44,hair='black') print(tina,tina['hair']) #{'weight': 44, 'hair': 'black', 'height': 165} black
小練習:code
#電話簿的案例: people={ 'tina':{ 'phone':123, 'address':'beijing' }, 'fei':{ 'phone':34444, 'address':'tianjin' } } #方法一: name = input('input your name:') for i in people: if name==i: print('%s %s is %d;%s %s is %s' %(name,'phone',people[name]['phone'],name,'address',people[name]['address'])) #方法二: lables={ 'phone':'phone number is', 'address':'address is' } name=input('input your name:') key=input('Phone number(p) or address(a):') if key=='p':key='phone' if key=='a':key='address' if name in people: print('%s %s is %s'%(name,lables[key],people[name][key])) else:quit
字典格式化字符串的用法:對象
table = {'Alice':457819,'Bill':929181,'Candy':826213} print('Bill`s phone number is %(Bill)d'%table)#Bill`s phone number is 929181
清空字典:blog
table = {'Alice':457819,'Bill':929181,'Candy':826213} table.clear() print(table)#{}
根據鍵建立新的字典:ip
x={}.fromkeys(['name','age']) print(x,x.fromkeys(['age'])) 執行結果: {'name': None, 'age': None} {'age': None}
用可迭代對象爲參數,且每個迭代對象爲(k,v)對字符串
l1=[1,2,3] l2=['tina','tom','fei'] d=dict(zip(l1,l2)) print(d)#{1: 'tina', 2: 'tom', 3: 'fei'}
字典推導式:
d={c:ord(c) for c in 'abc'} print(d)#{'b': 98, 'c': 99, 'a': 97}
小練習:(字符統計,返回字典)
d={} s='hello haha' for c in s: if c in d: d[c]+=1 else: d[c]=1 print(d) 結果: {'a': 2, ' ': 1, 'h': 3, 'l': 2, 'o': 1, 'e': 1}
#方法二: d={} s='hello haha' for c in s: d[c]=d.setdefault(c,0)+1#dict自帶的setdefault方法,會在key存在時返回value,若不存在,則設爲指定值並返回這個值。 print(d)