最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Python中字典的鍵的使用

 更新時間:2015年08月19日 10:18:39   作者:一路向北  
這篇文章主要介紹了深入理解Python中字典的鍵的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

字典的鍵

       字典中的值沒有任何限制, 可以是任意Python對象,即從標(biāo)準對象到用戶自定義對象皆可,但是字典中的鍵是有類型限制的。
(1)不允許一個鍵對應(yīng)多個值
        必須明確一條原則:每個鍵只能對應(yīng)一個項。也就是說:一鍵對應(yīng)多個值是不允許的(像列表、元組和其他字典這樣的容器對象是可以的)。 當(dāng)有鍵發(fā)生沖突(即字典鍵重復(fù)賦值),取最后(最近)的賦值。Python并不會因字典中的鍵存在沖突而產(chǎn)生一個錯誤,它不會檢查鍵的沖突是因為如果真這樣做的話,在每個鍵-值對賦值的時候都會做檢查,這將會占用一定量的內(nèi)存。

  >>> dict1 = {'foo':789, 'foo': 'xyz'} 
  >>> dict1 
  {'foo': 'xyz'} 
  >>> dict1['foo'] = 123 
  >>> dict1 
  {'foo': 123} 

(2)鍵必須是可哈希的

       大多數(shù)Python對象可以作為鍵,但它們必須是可哈希的對象。像列表和字典這樣的可變類型,由于它們不是可哈希的,所以不能作為鍵。
       所有不可變的類型都是可哈希的,因此它們都可以做為字典的鍵。要說明的是:值相等的數(shù)字表示相同的鍵,即整型數(shù)字1和浮點數(shù)1.0的哈希值是相同的,它們是相同的鍵。
       同時,也有一些可變對象(很少)是可哈希的,它們可以做字典的鍵,但很少見。舉一個例子,一個實現(xiàn)了__hash__() 特殊方法的類。因為__hash__()方法返回一個整數(shù),所以仍然是用不可變的值(做字典的鍵)。
       為什么鍵必須是可哈希的?解釋器調(diào)用哈希函數(shù),根據(jù)字典中鍵的值來計算存儲你的數(shù)據(jù)的位置。如果鍵是可變對象,它的值可改變。如果鍵發(fā)生變化,哈希函數(shù)會映射到不同的地址來存儲數(shù)據(jù)。如果這樣的情況發(fā)生,哈希函數(shù)就不可能可靠地存儲或獲取相關(guān)的數(shù)據(jù)。選擇可哈希的鍵的原因就是因為它們的值不能改變。
        數(shù)字和字符串可以被用做字典的鍵,元組是不可變的但也可能不是一成不變的,因此用元組做有效的鍵必須要加限制:若元
組中只包括像數(shù)字和字符串這樣的不可變參數(shù),才可以作為字典中有效的鍵。

示例:
# vi userpw.py

#!/usr/bin/env python

db = {}

def newuser():

  prompt= 'please regist your name: '

  while True:

    name = raw_input(prompt)

    if db.has_key(name):

      prompt = 'name taken,try another: '

      continue

    else:

      break

  pwd = raw_input('passswd: ')

  db[name] = pwd

  print 'Newuser [%s] has added successfully!' %name

def 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)uit

Enter choice: """

  while True:

    try:

      choice = raw_input(prompt).strip()[0].lower()

      print '\nYou picked: [%s]' % choice

      if choice not in 'neq':

        print 'invalid option,please try again'

      if choice == 'n':

        newuser()

      if choice == 'e':

        olduser()

      if choice == 'q':

        break

    except(EOFError,KeyboardInterrupt):

      print 'invalid option,please try again'


if __name__ == '__main__':

  showmenu()

相關(guān)文章

  • Python腳本修改阿里云的訪問控制列表的方法

    Python腳本修改阿里云的訪問控制列表的方法

    這篇文章主要介紹了Python腳本修改阿里云的訪問控制列表的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Python中shutil模塊的常用文件操作函數(shù)用法示例

    Python中shutil模塊的常用文件操作函數(shù)用法示例

    shutil模塊提供比OS模塊更強大的本地文件操作功能,包括文件的壓縮和解壓縮等,下面我們就來列舉Python中shutil模塊的常用文件操作函數(shù)用法示例:
    2016-07-07
  • Django操作session 的方法

    Django操作session 的方法

    這篇文章主要介紹了Django操作session 的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python從List中刪除重復(fù)項的六種方法

    Python從List中刪除重復(fù)項的六種方法

    Python從列表中刪除重復(fù)項的方法,在本文中列出了6種方法,這些方法在許多應(yīng)用程序中都會遇到,作為程序員,我們最好了解它們,以便在需要時編寫有效的程序,感興趣的小伙伴跟著小編一起來看看吧
    2024-10-10
  • 如何基于Python + requests實現(xiàn)發(fā)送HTTP請求

    如何基于Python + requests實現(xiàn)發(fā)送HTTP請求

    這篇文章主要介紹了如何基于Python + requests實現(xiàn)發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python使用asyncio包實現(xiàn)異步編程方式

    Python使用asyncio包實現(xiàn)異步編程方式

    這篇文章主要介紹了Python使用asyncio包實現(xiàn)異步編程方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解決pytorch 的state_dict()拷貝問題

    解決pytorch 的state_dict()拷貝問題

    這篇文章主要介紹了解決pytorch 的state_dict()拷貝問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • numpy中的掩碼數(shù)組的使用

    numpy中的掩碼數(shù)組的使用

    本文主要介紹了numpy中的掩碼數(shù)組的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python排序算法之選擇排序定義與用法示例

    Python排序算法之選擇排序定義與用法示例

    這篇文章主要介紹了Python排序算法之選擇排序定義與用法,簡單描述了選擇排序的功能、原理,并結(jié)合實例形式分析了Python定義與使用選擇排序的相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • 使用NumPy讀取MNIST數(shù)據(jù)的實現(xiàn)代碼示例

    使用NumPy讀取MNIST數(shù)據(jù)的實現(xiàn)代碼示例

    這篇文章主要介紹了使用NumPy讀取MNIST數(shù)據(jù)的實現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論

绥中县| 客服| 宁武县| 抚宁县| 明水县| 周至县| 高陵县| 得荣县| 方城县| 巴东县| 黄山市| 宁安市| 县级市| 阿城市| 曲周县| 都匀市| 邓州市| 南安市| 巴林右旗| 霸州市| 永德县| 前郭尔| 合江县| 新巴尔虎右旗| 湖州市| 丁青县| 绿春县| 邳州市| 新龙县| 苏尼特右旗| 喀喇| 武宁县| 天峻县| 龙游县| 边坝县| 西乌珠穆沁旗| 蓬安县| 阿尔山市| 郁南县| 临泉县| 修文县|