python中的字典使用分享,python字典分享

來源:互聯網
上載者:User

python中的字典使用分享,python字典分享

字典中的鍵使用時必須滿足一下兩個條件:

1、每個鍵只能對應一個項,也就是說,一鍵對應多個值時不允許的(列表、元組和其他字典的容器物件除外)。當有鍵發生衝突時(即字典鍵重複賦值),取最後的賦值。

複製代碼 代碼如下:>>> myuniversity_dict = {'name':'yuanyuan', 'age':18, 'age':19, 'age':20, 'schoolname':Chengdu, 'schoolname':Xinxiang}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Chengdu' is not defined
>>> myuniversity_dict = {'name':'yuanyuan', 'age':18, 'age':19, 'age':20, 'schoolname':'Chengdu', 'schoolname':'Xinxiang'}
>>> myuniversity_dict
{'age': 20, 'name': 'yuanyuan', 'schoolname': 'Xinxiang'}
>>>

2、鍵必須是可雜湊的,像列表和字典這樣的可變類型,由於他們是不可雜湊的,所以不能作為字典的鍵。

為什麼呢?—— 解譯器調用雜湊函數,根據字典中鍵的值來計算儲存你的資料的位置。如果鍵是可變對象,可以對鍵本身進行修改,那麼當鍵發生變化時,雜湊函數會映射到不同的地址來儲存資料,這樣雜湊函數就不可能可靠地儲存或擷取相關的資料; 選擇可雜湊鍵的原因就是他們的值不能被改變。摘抄python 核心編程(第二版)的一個執行個體如下:

#!/usr/bin/env pythondb = {}def newuser():  prompt = 'login desired: '  while True:    name = raw_input(prompt)    if db.has_key(name):      prompt = 'name taken, try another\n'      continue    else:      break  pwd = raw_input('passwd: ')  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:        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()

運行結果:

[root@localhost src]# python usrpw.py (N)ew User Login(E)xisting User Login(Q)uitEnter choice:nYou picked: [n]login desired: rootpasswd: 1(N)ew User Login(E)xisting User Login(Q)uitEnter choice:nYou picked: [n]login desired: rootname taken, try another

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.