1、字典是Python中=唯一的映射類型。映射類型對象裡哈希值(鍵,key)和只指向的對象(值,value)是一對多的關系,一個字典是可變的,是一個容器類型。字典類型和序列類型(元組,列表)的不同在於存儲和訪問數據的方式不同。序列類型只用數字類型的鍵。映射類型可以用其他對象類型左鍵,一般最常見的是用字符串左鍵。映射類型中的數據是無序排列的。
2、字典用{}來建立,內建函數 dict() 或者一個方便的內建函數fromkey()可以創建一個‘默認’字典,字典裡元素具有相同的值。
ddict={}.fromkey(('x','y'),1)
ddict:{'y':1,'x':1}
訪問:dict1={'name':'earth','port':80}
>>> for key in dict1:
print ('key=%s, value=%s' %(key,dict1[key]))
key=name, value=earth
key=port, value=80
3、字典是可變的,但是字典裡面的鍵不允許改變!
4、如何更新字典:你可以 添加一個新數據項或新元素(鍵值對);修改一個已經存在的數據項,或者刪除一個已經存在的數據項。
5.字典的比較算法:先比較字典的大小,然後是鍵,最後是值。
6.update()方法可以將一個字典的內容添加到另外一個字典中。字典中原來有的鍵與新添加的鍵重復,重復的鍵所對應的內容被新建所對應的內容覆蓋掉。原來不存在的條目會添加到字典中。
setdefault()方法:檢查字典中是否存在某鍵,若存在,則可以取到它的值,如果找不到,你可以給這個鍵賦默認值並返回該值。
key() items() values()都是其內建函數,返回的都是列表
7、字典的鍵:
(1)不允許一個鍵對應多個值
(2)鍵必須是可哈希的,像列表和字典這樣可變類型,是不可哈希的,因此不能作為鍵。所有的不變類型都是可哈希的。
例子:管理用戶名和密碼的模擬登陸數據系統
db={}
def newuser():
prompt='login desired:'
while True:
username=input(prompt)
if username in db:
prompt='name taken,try another:'
continue
else:
break
password=input('please enter password:')
db[username]=password
def olduser():
username=input('please enter username:')
password=input('please enter password:')
psw=db.get(username)
if password==psw:
print ('Welcome back %s' % username)
else:
print ('login incorrect!')
def showmenu():
prompt='''
(N)ew User Login
(O)ld User Login
(Q)uit
Please enter your choice
'''
done=False
while not done:
chosen=False
while not chosen:
try:
choice=input(prompt).strip()[0].lower()
except (EOFError,KeyboardInterrupt):
choice='q'
print ('\nYou picked:[%s]' %choice)
if choice not in 'noq':
print ('Invaild option, try again ')
else:
chosen='True'
if choice=='q':
done=True
if choice=='n':
newuser()
if choice=='o':
olduser()
if __name__=='__main__':
showmenu()