1. 程式人生 > >Python中字典(dict)詳解

Python中字典(dict)詳解

python字典:
  一個對映物件將可雜湊的值對映到任意物件。對映型別是可變的物件。當前只有一種標準的對映型別,即字典。用作鍵值的數字型別遵循正常的數值比較規則:如果兩個數是相等的(例如1和1.0),那麼它們可以交替使用來索引同一個字典條目。(但是注意,由於計算機將浮點數儲存為近似值,所以將他們用作字典的鍵值是不明智的)
  字典的鍵值幾乎可以是任意值。包含列表字典和其他可變型別(比較是通過值而不是物件本身的型別)不能作為鍵值。
字典可以用一個被大括號包圍的以逗號分隔的鍵值對(key:value)列表來建立,例
如:{jack:4098,sjoerd:4127}or{4098:j

ack,4127:sjoerd},或者用字典構造器來構造。

字典構造器如下:

    class dict(**kwarg)
    class dict(mapping, **kwarg)
    class dict(iterable, **kwarg)

返回一個從可選的位置引數和可能為空的關鍵字集合中初始而來的新字典。

  如果沒有給定位置引數,那麼建立的是空的字典。如果給了位置引數和一個對映物件,那麼建立的字典和對映物件擁有相同的鍵值對。否則,位置引數必須是一個可迭代的物件。可迭代物件中的每一個條目自身也得是可迭代的,並且包含兩個物件。可迭代條目中的第一個物件作為字典的鍵值,第二個物件作為相應的值。如果一個鍵值出現了多次,那麼最後一個鍵值對應的值就是該鍵值在字典中對應的值。
  如果給出了鍵值引數,那麼鍵值引數和其對應的值都被新增到從位置引數創建出來的字典中。如果加入的鍵值已經在字典中存在,那麼新加入的鍵值對應的值將取代原字典中該鍵值對應的值。
  為了更好的說明,以下幾個例子都返回相同的字典{

"one":1,"two":2,"three":3} :

    >>> a = dict(one=1, two=2, three=3)
    >>> b = {'one': 1, 'two': 2, 'three': 3}
    >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
    >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
    >>> e = dict({'three'
: 3, 'one': 1, 'two': 2}) >>> a == b == c == d == e True

  以下方法是字典中支援的方法:

    len(d)
        返回字典中的條目數

    d[key]
        返回該鍵值key對應的條目,如果沒有對應條目,則觸發KeyError錯誤。
    如果一個字典的子類定義了__missing__()方法,並且該key不存在,那麼d[key]操作通過鍵值key來呼叫該方法(__missing__()方法)。
    d[key]操作就會返回或者觸發__missing__(key)中定義的任何值,如果定義的是返回值,則返回該值,如果定義的是錯誤,則觸發該錯誤。
    沒有其他操作或方法會呼叫__missing__(),也就是僅僅d[key]中key不存在時才會呼叫該方法。如果__missing__()沒有定義,那麼會觸發
    KeyError錯誤;__missing__()必須定義成方法,不能是一個變數。
    例如如下程式碼所示:
    >>> class Counter(dict):
    ...     def __missing__(self, key):
    ...         return 0
    >>> c = Counter()
    >>> c['red']
    0
    >>> c['red'] += 1
    >>> c['red']
    1

    d[key] = value
        設定d[key]的值為value,如果該key不存在,則為新增

    del d[key]
        從字典d中移除key對應的鍵值對條目,如果該key不存在,則會觸發KeyError錯誤。

    key in d
        如果字典d中有該key,則返回true,否則返回false

    key not in d:
        和key in d意思相反

    iter(d)
        返回包含字典d中所有鍵值的迭代器,是iter(d.keys())的縮寫

    clear()
        清空字典中的所有條目

    copy() 
        返回該字典的淺拷貝

    classmethod fromkeys(seq[,value])
        用seq中的鍵值和設定的相應的value來建立一個新的字典
        fromkeys()是一個類的方法,返回一個新的字典,值為None

    get(key[,default])
        如果字典中存在該key,返回字典中key對應的值;如不存在,則返回方法中給定的default值。如果方法中沒有給定default值,則預設為
        None,總之永遠不會觸發KeyError錯誤。

    items()
        返回字典的新檢視(即返回(key,value)列表)

    keys()
        返回字典中鍵值的新檢視(即鍵值列表)

    pop(key[,default])
        如果字典中有該key,則移除該key對應的條目,並返回該key對應的值;如果不存在該key,則返回default值。如果沒有給定default值
        並且字典中不存在該key值,那麼會觸發一個KeyError錯誤。

    popitem()
        從字典中隨機移除一個條目,並將該條目(key,value)返回。popitem()對字典的破壞性迭代特別有用,所以經常在集合中使用。
        如果字典中已經沒有條目,那麼該方法會觸發一個KeyError錯誤。

    setdefault(key[,default])
        如果該key已經在字典中,那麼返回key對應的值;如果不在字典中,則將該key插入到字典中,該key對應的值為該方法設定的default
        值,並返回default值,如果沒有設定default值,則對應None值。

    update([other])
        用other中的鍵值對來更新字典,重寫已經存在的key值,返回None。

相關推薦

Python字典(dict)

python字典:   一個對映物件將可雜湊的值對映到任意物件。對映型別是可變的物件。當前只有一種標準的對映型別,即字典。用作鍵值的數字型別遵循正常的數值比較規則:如果兩個數是相等的(例如1和1.0),那麼它們可以交替使用來索引同一個字典條目。(但是注意,由於

python字典dic-建立,遍歷和排序

在python的程式設計中,字典dic是最典型的資料結構,看看如下對字典的操作: 建立字典 直接使用 {} 建立空字典: book_price = {} 直接初始化的方式建立字典: book_price = {'a':23,'b':30}

Pythonenumerate用法

num readline 文件的 簡單 += () 用法 字符 計數 enumerate()是python的內置函數、適用於python2.x和python3.xenumerate在字典上是枚舉、列舉的意思enumerate參數為可遍歷/可叠代的對象(如列表、字符串)enu

python閉包

ner copy bsp div 執行 gpo 註意 outer 在一起 閉包這個概念好難理解,身邊朋友們好多都稀裏糊塗的,稀裏糊塗的林老冷希望寫下這篇文章能夠對稀裏糊塗的夥伴們有一些幫助~ 請大家跟我理解一下,如果在一個函數的內部定義了另一個函數,外部的我們叫

聊聊Python的GIL python的GIL

對於廣大寫Python的人來說,GIL(Global Interpreter Lock, 全域性直譯器鎖)肯定不陌生,但未必清楚GIL的歷史和全貌是怎樣的,今天我們就來梳理一下GIL。 1. 什麼是GIL GIL的全稱是 Global Interpreter Lock,全域性直譯器鎖。之所以叫這

Python字典dict

last 序列 比較 索引 結構 刪除 basic 檢測 local dict字典 字典是一種組合數據,沒有順序的組合數據,數據以鍵值對形式出現 # 字典的創建 # 創建空字典1 d = {} print(d) # 創建空字典2 d = dict() print(d

pythonsocket模組

socket模組簡介 網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket。socket通常被叫做“套接字”,用於描述IP地址和埠,是一個通訊鏈的控制代碼,可以用來實現不同虛擬機器或不同計算機之間的通訊。在Internet上的主機一般運行了多個服務

pythonlist方法說明

序號 分類 關鍵字/函式/方法 描述 1 新增 list.insert(索引,資料) 在指定位置插入資料     list.append(資料)

Python的generator

注:本文在原文基礎上做了一點點修改,僅僅作為個人理解與記憶,建議直接檢視原文。 generator使用場景:   1  當我們需要一個公用的,按需生成的資料   2  某個事情執行一部分,另一部分在某個事件發生後再執行下一部分,實現非同步。 注意事項:  

pythonpsutil模組

         在Python中獲取系統資訊的另一個好辦法是使用psutil這個第三方模組。顧名思義,psutil = process and system utilities,它不僅可以通過一兩行程式碼實現系統監控,還可以跨平臺使用,支援Linu

Python函式的

Python中的函式作用跟其他語言的函式作用基本相同,都是帶名字的程式碼塊,用於一些完成具體的工作。 要執行函式定義的特殊任務,可呼叫該函式。需要在程式中,多次執行同一項任務的函式,無需反覆編寫完成該任務的程式碼,而只需要呼叫執行該任務的函式即可。 首先:定義一

python的import

標準的匯入模組 在python中所有載入到記憶體中的模組都存在於sys.modules 當 import 一個模組時首先會在這個列表中查詢是否已經載入了此模組: 如果載入了則只是將模組的名字加入到正在呼叫 import 的模組的 Local 名字空間中。 如果沒有載入則從

pythonnew方法

new_ 方法是什麼? __new__方法其實就是建立物件的方法 new()方法是在類準備將自身例項化時呼叫。 一個類可以有多個位置引數和多個命名引數,而在例項化開始之後,在呼叫 init()方法之前,Python首先呼叫new()方法: def new(cls, *args, **kw

Pythonglobal用法

1. 文件說明    在python3.3.2的官方api幫助文件上看到, 如下一段話: The global statement is a declaration which holds for the entire current code block. It mean

pythonlist操作

1.定義list >>> li = ["a", "b", "mpilgrim", "z", "example"] >>> li ['a', 'b', 'mpilgrim', 'z', 'example'] >>> li[

python裝飾器

裝飾器 我們知道,在python中,我們可以像使用變數一樣使用函,這主要依賴於以下幾點: 函式可以被賦值給其他變數 函式可以被刪除 可以在函式裡面再定義函式,函式巢狀。 函式可以作為引數傳遞給另外一個函式 函式可以作為另一個函式的返回值 對一個簡單的函

pythondatetime模組

timedelta timedelta的例項化 一個timedalta物件代表了一個時間差,當兩個date或datetime進行相減操作時會返回一個timedelta物件,或者,我們也可以手動對其進行例項化,其建構函式的原型如下: class datetime.timedelta([

Pythonproperty屬性

ring delet 暴露 span odi ret wan ise odin 1. 什麽是property屬性 一種用起來像是使用的實例屬性一樣的特殊屬性,可以對應於某個方法 # ############### 定義 ############### class

python接口自動化(九)--python字典和json的區別(

() ima 單引號 遍歷 不能 提取 都是 也說 none 簡介   這篇文章的由來是由於上一篇發送post請求的接口時候,參數傳字典(dict)和json的緣故,因為python中,json和dict非常類似,都是key-value的形式,為啥還要這麽傳參,在群裏問了

python 字典操作

python字典操作 字典一種key – value 的數據類型,使用就像我們上學用的字典,通過筆劃、字母來查對應頁的詳細內容。 語法: info ={ ‘stu1001‘:"TengLan Wu", ‘Stu1002‘:"Longze Loula", ‘stu1103‘:"XiaoZ