字典中的鍵使用時必須滿足一下兩個條件:
1、每個鍵只能對應乙個項,也就是說,一鍵對應多個值時不允許的(列表、元組和其他字典的容器物件除外)。當有鍵發生衝突時(即字典鍵重複賦值),取最後的賦值。
>>> myuniversity_dict =traceback (most recent call last):
file
"", line 1, in
nameerror: name
'chengdu'is
notdefined
>>> myuniversity_dict =
>>>myuniversity_dict
>>>
2、鍵必須是可雜湊的,像列表和字典這樣的可變型別,由於他們是不可雜湊的,所以不能作為字典的鍵。
為什麼呢?—— 直譯器呼叫雜湊函式,根據字典中鍵的值來計算儲存你的資料的位置。如果鍵是可變物件,可以對鍵本身進行修改,那麼當鍵發生變化時,雜湊函式會對映到不同的位址來儲存資料,這樣雜湊函式就不可能可靠地儲存或獲取相關的資料; 選擇可雜湊鍵的原因就是他們的值不能被改變。摘抄python 核心程式設計(第二版)的乙個例項如下:
#!/usr/bin/env python
db ={}
defnewuser():
prompt = '
login desired:
'while
true:
name =raw_input(prompt)
ifdb.has_key(name):
prompt = '
name taken, try another\n
'continue
else
:
break
pwd = raw_input('
passwd: ')
db[name] =pwd
defolduser():
name = raw_input('
login: ')
pwd = raw_input('
passwd: ')
passwd =db.get(name)
if passwd ==pwd:
'welcome back
', name
else
:
'login incorrect
'def
showmenu():
prompt = """
(n)ew user login
(e)xisting user login
(q)uit
enter choice:
"""done =false
while
notdone:
chosen =false
while
notchosen:
try:
choice =raw_input(prompt).strip()[0].lower()
except
: choice = 'q'
'\nyou picked: [%s]
' %choice
if choice notin'
neq'
:
'invalid option, try again
'else
: chosen =true
if choice == '
q':done =true
if choice == 'n'
:newuser()
if choice == 'e'
:olduser()
if__name__ == '
__main__':
showmenu()
執行結果:
[root@localhost src]#python usrpw.py
(n)ew user login
(e)xisting user login
(q)uit
enter choice:n
you picked: [n]
login desired: root
passwd: 1(n)ew user login
(e)xisting user login
(q)uit
enter choice:n
you picked: [n]
login desired: root
name taken,
try another
python 字典例項
python 內建了字典 dict 的支援,dict 全稱 dictionary,在其他語言中也 稱為 map,使用鍵 值 key value 儲存,具有極快的查詢速度 問題 統計列表中某個字元出現的次數 ll lily hanmei lilei lily hamei hamei lily 解題思路...
Python 字典應用
問題描述 給定當前的時間,請用英文的讀法將它讀出來。時間用時h和分m表示,在英文的讀法中,讀乙個時間的方法是 如果m為0,則將時讀出來,然後加上 o clock 如3 00讀作 three o clock 如果m不為0,則將時讀出來,然後將分讀出來,如5 30讀作 five thirty 時和分的讀...
python 字典例項學習
mydict print mydict key list mydict.keys 獲取所有的key print key value list mydict.values 獲取所有的value print value mydict 2 b 字典建立乙個新key value的鍵值段 print mydi...