亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

python基礎(chǔ)教程:dict(字典)

pumpkin9 / 1276人閱讀

摘要:字典的創(chuàng)建字典可以通過或一對(duì)花括號(hào)創(chuàng)建一個(gè)空字典。方法是字典對(duì)象名稱加方括號(hào)括起來的鍵名,比如??兆值涞拈L度是和類似于對(duì)列表的操作,不過這兩個(gè)函數(shù)檢驗(yàn)的是字典的鍵。修改了字典并沒有重新獲取,但是已經(jīng)反應(yīng)了變化,多了返回值的對(duì)象,。

字典(dict, dictionary的簡寫)是Python中另一個(gè)非常重要的內(nèi)置數(shù)據(jù)類型,是Python中映射類型(Mapping Type),它把“鍵”(key)映射到“值”(value),通過key可以快速找到value,它是一種“鍵值對(duì)”(key-value)數(shù)據(jù)結(jié)構(gòu)。

“鍵”,可以是任意不可變的類型對(duì)象(可以做hash,即具有hash()eq()方法的對(duì)象),通常是字符串和數(shù)字,同一個(gè)字典中鍵是唯一的。但不能是list,因?yàn)閘ist可以通過索引、切片、append()和extend()方法改變其值。
“值”,可以是任何類型的數(shù)據(jù)。

Python字典(dict)的創(chuàng)建

字典可以通過dict()或一對(duì)花括號(hào)創(chuàng)建一個(gè)空字典:?d = {}。花括號(hào)內(nèi)可以放用逗號(hào),隔開的多個(gè)鍵值對(duì),鍵值對(duì)用冒號(hào):隔開:

In [1]: d1 = {}

In [2]: d2 = dict()

In [3]: d1 == d2
Out[3]: True

In [4]: d3 = {"a": 1, "b": 2, "c": 3}

In [5]: d3
Out[5]: {"a": 1, "b": 2, "c": 3}

In [6]: d4 = {"a": 1, "a":2, "a":3}

In [7]: d4
Out[7]: {"a": 3}

上面最后一個(gè)例子d4的初始化中,鍵都是"a",所以得到的字典只有一個(gè)鍵,它的值是最后一次賦值3.

dict()創(chuàng)建字典對(duì)象

dict()無參數(shù)時(shí)生成空字典,也可以通過傳入?yún)?shù)進(jìn)行初始化。傳入?yún)?shù)有兩種形式:
一種是,序列型數(shù)據(jù)list或tuple,它每個(gè)元素必須又含有兩個(gè)子元素,以滿足key-value對(duì);
一種是,name=value形式的參數(shù)。
見下面的例子:

In [21]: d1
Out[21]: {"a": 1, "b": 2, "c": 3}

In [22]: d2 = dict(a=1, b=2, c=3)

In [23]: d2
Out[23]: {"a": 1, "b": 2, "c": 3}
字典推導(dǎo)式(Dict Comprehension)

類似列表推導(dǎo)式,我們可以通過一個(gè)for循環(huán)表達(dá)式來創(chuàng)建一個(gè)字典:

In [10]: dd = {x: x*x for x in range(5)}

In [11]: dd
Out[11]: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

list不能做字典的key,但是可以做value:

In [12]: l1 = [1,2,3]

In [13]: d = {"a": l1}

In [14]: d = {l1: "a"}
----------------------
TypeError     Traceback (most recent call last)
 in 
----> 1 d = {l1: "a"}

TypeError: unhashable type: "list"
Python字典(dict)的訪問

(1)通過鍵訪問其值
列表可以通過其索引訪問元素,字典就是通過鍵訪問對(duì)應(yīng)的值,形式類似列表那樣用方括號(hào),只不過用“鍵”替代了“索引”。方法是字典對(duì)象名稱加方括號(hào)括起來的鍵名,比如:mydict["a"]。如果某個(gè)鍵不在字典對(duì)象中,通過方括號(hào)訪問就會(huì)報(bào)錯(cuò):

In [26]: myd = dict(a=1, b=2, c=3)

In [27]: myd
Out[27]: {"a": 1, "b": 2, "c": 3}

In [28]: myd["a"]
Out[28]: 1

In [29]: myd["e"]
------------------
KeyError          Traceback (most recent call last)
 in 
----> 1 myd["e"]

KeyError: "e"

(2)通過get(key)方法訪問其值
給get()傳入鍵作為參數(shù),就可以得到value,如果key不存在則返回None。

In [30]: myd.get("a")
Out[30]: 1

In [31]: print(myd.get("e"))
None
Python字典(dict)的更改

詳見下面的示例代碼:

In [32]: myd = dict(a=1, b=2, c=3)

In [33]: myd["a"] = 9  # 改變某個(gè)鍵的值

In [34]: myd
Out[34]: {"a": 9, "b": 2, "c": 3}

In [35]: myd["e"] = 8  # 增加新的鍵值對(duì)

In [36]: myd
Out[36]: {"a": 9, "b": 2, "c": 3, "e": 8}

In [37]: del myd["e"]  # 刪除某個(gè)鍵及其值

In [38]: myd
Out[38]: {"a": 9, "b": 2, "c": 3}

In [39]: myd.pop("c")  # 刪除某個(gè)鍵及其值并得到其值
Out[39]: 3

In [40]: myd
Out[40]: {"a": 9, "b": 2}
Python字典(dict)相關(guān)的內(nèi)置函數(shù)

Python內(nèi)置了一些函數(shù)可以用于操作字典,它們是:

len()
返回字典的長度,是鍵的個(gè)數(shù),也是值的個(gè)數(shù),也是鍵值對(duì)的個(gè)數(shù)。空字典的長度是0

In [41]: len({"a":1, "b":2})
Out[41]: 2

In [42]: len({})
Out[42]: 0

any()和all()
類似于對(duì)列表、tuple的操作,不過這兩個(gè)函數(shù)檢驗(yàn)的是字典的鍵(key)。
any(): 只要字典有一個(gè)鍵為True則返回True;
all(): 只有字典的所有鍵都為True才返回True;

In [45]: any({"": 1, 0: "abcd", False: 333})
Out[45]: False

In [46]: all({"": 1, 0: "abcd", False: 333})
Out[46]: False

In [47]: all({"a": 1, 0: "abcd", False: 333})
Out[47]: False

In [48]: any({"a": 1, 0: "abcd", False: 333})
Out[48]: True

In [49]: any({})
Out[49]: False

In [50]: all({})
Out[50]: True

不過,空字典有意思,它沒有鍵卻認(rèn)為是所有鍵都為True,all({})返回True。

sorted()
跟操作列表、tuple的效果一樣,它把字典的所有key當(dāng)做一個(gè)列表(或元組)進(jìn)行排序

In [51]: sorted({"a": 1, "c": 3, "b": 4})
Out[51]: ["a", "b", "c"]
in 運(yùn)算符

跟列表,元組一樣,in用來檢驗(yàn)一個(gè)key是不是在字典中:

In [56]: "a" in {"a": 1, "c": 3, "b": 4}
Out[56]: True

In [57]: "3" in {"a": 1, "c": 3, "b": 4}
Out[57]: False

In [58]: "3" not in {"a": 1, "c": 3, "b": 4}
Out[58]: True

遍歷字典:

In [59]: for key in {"a": 1, "c": 3, "b": 4}: 
    ...:     print(key) 
    ...:
a
c
b
Python字典(dict)的內(nèi)置方法:

(1)keys()
返回鍵(key)的view對(duì)象(類型是:dict_keys)。這個(gè)view對(duì)象可以動(dòng)態(tài)查看字典內(nèi)部的對(duì)象,當(dāng)字典改變后,這個(gè)view對(duì)象也會(huì)反應(yīng)變化。
Python 2時(shí),返回的是list,現(xiàn)在是dict_keys。

In [76]: myd = dict(a=1, b=2, c=3)

In [77]: kk = myd.keys()

In [78]: type(kk)
Out[78]: dict_keys

In [79]: for k in kk: 
    ...:     print(k) 
    ...:
a
b
c

In [80]: myd["e"] = 9  # 修改了字典

In [81]: for k in kk:  # 并沒有重新獲取kk,但是kk已經(jīng)反應(yīng)了變化,多了e
    ...:     print(k) 
    ...:
a
b
c
e

(2)values()
返回值(value)的view對(duì)象,dict_values。

(3)items()
返回鍵值對(duì)(key-value)的view對(duì)象:dict_items

In [82]: vv = myd.values()

In [83]: vv
Out[83]: dict_values([1, 2, 3, 9])

In [84]: ii = myd.items()

In [85]: ii
Out[85]: dict_items([("a", 1), ("b", 2), ("c", 3), ("e", 9)])

(4)get(key)
獲取key對(duì)應(yīng)的value,上面已經(jīng)講到。

(5)clear()
清空一個(gè)字典

In [86]: myd.get("a")
Out[86]: 1

In [87]: myd.get("x", 0)
Out[87]: 0

In [88]: myd.clear()

In [89]: myd
Out[89]: {}

(6)copy()
在Python中,把列表,字典對(duì)象賦值給變量時(shí),都是“淺拷貝”,即,變量指向了對(duì)象,原來的對(duì)象改變了,這個(gè)變量的值也會(huì)跟著變。而cop()函數(shù)是“深拷貝”,重新創(chuàng)造一個(gè)新對(duì)象賦值給變量,原來的對(duì)象的改變不影響新對(duì)象。

In [94]: d1 = {"a":1}

In [95]: d2 = d1  # 淺拷貝

In [96]: d3 = d1.copy()  # 深拷貝

In [97]: d1["a"] = 2  # 改變?cè)瓉淼淖值?
In [98]: d2
Out[98]: {"a": 2}  # 淺拷貝的d2也跟著改變

In [99]: d3
Out[99]: {"a": 1}  # 深拷貝的d3還是原來的值

(7)pop(key)
刪除key并返回它的值,上面已經(jīng)講到。

(8)popitem()
返回一對(duì)鍵值:

In [105]: myd = dict(a=1, b=2, c=3)

In [106]: myd.popitem()
Out[106]: ("c", 3)

In [107]: myd.popitem()
Out[107]: ("b", 2)

(9)fromkeys()
通過一個(gè)序列來初始化字典:

In [109]: d = {}

In [110]: d.fromkeys([1,2,3])
Out[110]: {1: None, 2: None, 3: None}

In [111]: d.fromkeys([1,2,3], 0)
Out[111]: {1: 0, 2: 0, 3: 0}

(10)update()
用一個(gè)字典來更新另一字典:

In [113]: d = d.fromkeys([1,2,3], 0)

In [114]: d
Out[114]: {1: 0, 2: 0, 3: 0}

In [115]: d.update({1:10, 2:20})

In [116]: d
Out[116]: {1: 10, 2: 20, 3: 0}
總結(jié)

字典是Python中很重要的一個(gè)數(shù)據(jù)結(jié)構(gòu),也是Python內(nèi)置的數(shù)據(jù)類型。今后的編程中會(huì)經(jīng)常用到它,所以要熟練掌握它的各種操作。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/43775.html

相關(guān)文章

  • Python基礎(chǔ)知識(shí)解答:字典詳細(xì)使用教程

      字典作為python中一個(gè)內(nèi)置的數(shù)據(jù)機(jī)構(gòu),它其實(shí)和列表是一樣的,但是它又是沒有順序的,以鍵值的方式,用來存儲(chǔ)數(shù)據(jù),那么,它的使用教程是什么呢?下文給大家做個(gè)解答?! ∫?什么是字典  字典作為Python的一個(gè)內(nèi)置數(shù)據(jù)結(jié)構(gòu),和列表一樣都是可變序列的,但是它是無序的,以鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù)?! 《?創(chuàng)建字典  創(chuàng)建字典的兩種方式,一種使用{}另一種使用內(nèi)置函數(shù)dict() #author:爪哇斗...

    89542767 評(píng)論0 收藏0
  • Python基礎(chǔ)到入門】Python基礎(chǔ)語法篇——基本數(shù)據(jù)類型【文末送書】

    摘要:布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有兩種值的數(shù)據(jù)類型可以通過內(nèi)置的函數(shù)查詢,例如還可以用來判斷和的區(qū)別在于不會(huì)認(rèn)為子類是一種父類類型。會(huì)認(rèn)為子類是一種父類類型?;竟δ苁沁M(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...

    Winer 評(píng)論0 收藏0
  • Python0基礎(chǔ)(上)——期末不掛科

    摘要:易于維護(hù)的成功在于它的源代碼是相當(dāng)容易維護(hù)的??梢浦不谄溟_放源代碼的特性,已經(jīng)被移植也就是使其工作到許多平臺(tái)。集合集合是由一個(gè)或數(shù)個(gè)形態(tài)各異的大小整體組成的,構(gòu)成集合的事物或?qū)ο蠓Q作元素或是成員。基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...

    Ajian 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)Python]字典,你還記得嗎?

    摘要:字典,這個(gè)東西你現(xiàn)在還用嗎隨著網(wǎng)絡(luò)的發(fā)展,用的人越來越少了。最早的名字叫伍記小字典,但未能編纂完成。新華字典由商務(wù)印書館出版。成為迄今為止世界出版史上最高發(fā)行量的字典。也被稱為關(guān)聯(lián)數(shù)組或哈希表。 字典,這個(gè)東西你現(xiàn)在還用嗎?隨著網(wǎng)絡(luò)的發(fā)展,用的人越來越少了。不少人習(xí)慣于在網(wǎng)上搜索,不僅有web版,乃至于已經(jīng)有手機(jī)版的各種字典了。我曾經(jīng)用過一本小小的《新華字典》。 《新華字典》是...

    galaxy_robot 評(píng)論0 收藏0
  • 簡析前端學(xué)習(xí)python3的基礎(chǔ)

    摘要:元組是靜態(tài)數(shù)組,它們不可變,且其內(nèi)部數(shù)據(jù)一旦創(chuàng)建便無法改變。元組緩存于運(yùn)行時(shí)環(huán)境,這意味著我們每次使用元組時(shí)無須訪問內(nèi)核去分配內(nèi)存。 以下是整理的JavaScript和python的基礎(chǔ)區(qū)別的整理: 字符串、列表、元組、字典、集合、函數(shù) 字符串 聲明一個(gè)字符串 python str = 123 str = 123 Tips: 如果是三個(gè)引號(hào)的話,那么在py中就是注釋的意思 ...

    summerpxy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

pumpkin9

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<