亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python元組和字典的內(nèi)建函數(shù)實(shí)例詳解

 更新時(shí)間:2019年10月22日 11:21:06   作者:prog_li  
這篇文章主要介紹了python元組和字典的內(nèi)建函數(shù),結(jié)合實(shí)例形式詳細(xì)分析了Python元組和字典的各種常見(jiàn)內(nèi)建函數(shù)功能與相關(guān)使用技巧,需要的朋友可以參考下

本文實(shí)例講述了python元祖和字典的內(nèi)建函數(shù)。分享給大家供大家參考,具體如下:

元組Tuple

元組是序列類(lèi)型一種,也是不可變類(lèi)型數(shù)據(jù)結(jié)構(gòu),對(duì)元組修改后會(huì)生成一個(gè)新的元組。所以Tuple對(duì)象并沒(méi)有太多的內(nèi)置方法。

count() 查詢一個(gè)元素在Tuple中的數(shù)量

count(…)

T.count(value) -> integer – return number of occurrences of value
返回一個(gè)value在Tuple出現(xiàn)的次數(shù),即個(gè)數(shù)。

In [5]: tup = ('My','name','is','Jmilk')
In [6]: tup.count('My')
Out[6]: 1
In [7]: tup.count('my')
Out[7]: 0

index() 查詢?cè)卦赥uple中的索引號(hào)

index(…)

T.index(value, [start, [stop]]) -> integer – return first index of value.
Raises ValueError if the value is not present.
返回在指定范圍中[start,[stop]],第一次出現(xiàn)的value的索引。

In [15]: tup.index('Jmilk',2,4)
Out[15]: 3

元組的遍歷

In [16]: tup
Out[16]: ('My', 'name', 'is', 'Jmilk')
In [17]: for i in tup:
  ....:   print i
  ....:
My
name
is
Jmilk

字典Dictionary

字典數(shù)據(jù)類(lèi)型使用鍵值對(duì)的映射關(guān)系來(lái)關(guān)聯(lián)數(shù)據(jù)。

創(chuàng)建一個(gè)字典對(duì)象

簡(jiǎn)單的創(chuàng)建

In [18]: dic = {'name':'Jmilk','age':23,'city':'BJ'}

fromkey()使用keys來(lái)創(chuàng)建字典

fromkeys(…)

dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.

通過(guò)一個(gè)keys的序列來(lái)創(chuàng)建字典,可以指定keys映射的value,默認(rèn)為None。

In [125]: newDic = {}.fromkeys(['name','age','city'],'not found')
In [126]: newDic
Out[126]: {'age': 'not found', 'city': 'not found', 'name': 'not found'}

查詢

查詢字典中key映射的value

In [44]: dic['age']
Out[44]: 23

get()查詢Key映射的value,當(dāng)key不存在時(shí),返回默認(rèn)值

get(…)

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

自動(dòng)添加(字典的默認(rèn)值):自動(dòng)添加是字典數(shù)據(jù)類(lèi)型的特性,即使一個(gè)Key起初不存在于字典中,也可為Key分配一個(gè)值,以此來(lái)建立新的項(xiàng)。

In [6]: dic
Out[6]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [7]: dic.get('age',24)
Out[7]: 23
In [8]: dic.get('a',24)
Out[8]: 24

若不使用get()函數(shù)去獲取一個(gè)不存在的key對(duì)應(yīng)的value時(shí),會(huì)報(bào)錯(cuò)。

len(dictName)獲取字典長(zhǎng)度

len(…)

len(object) -> integer

Return the number of items of a sequence or mapping.

len()是Python的內(nèi)建函數(shù),可以獲取序列或字典的長(zhǎng)度,即元素的個(gè)數(shù)。

In [34]: len(dic)
Out[34]: 3

keys()列出dict的Keys列表

keys(…)

D.keys() -> list of D's keys

In [22]: dic.keys()
Out[22]: ['city', 'age', 'name']

values()列出dict的values列表

values(…)

D.values() -> list of D's values

In [23]: dic.values()
Out[23]: ['BJ', 23, 'Jmilk']

添加字典項(xiàng)

通過(guò)賦值為字典添加一個(gè)項(xiàng)

格式:dictName[keyN] = valueN

In [25]: dic
Out[25]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [27]: dic['sex'] = 'man'
In [28]: dic
Out[28]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}

通過(guò)setdefault()增加

setdefault(…)

D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

當(dāng)key存在時(shí),call D.get(k,d)方法,即獲取key映射的value。當(dāng)key不存在時(shí),執(zhí)行D[k]=d,即為dict增加一個(gè)新的元素。

In [25]: dic
Out[25]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [26]: dic.setdefault('age',24)
Out[26]: 23
In [27]: dic.setdefault('sex','man')
Out[27]: 'man'
In [28]: dic
Out[28]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}

刪除字典項(xiàng)

del語(yǔ)句,刪除字典中key對(duì)應(yīng)的一個(gè)項(xiàng)

del語(yǔ)句可以操作所有的迭代器對(duì)象。

In [40]: dic
Out[40]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [41]: del dic['age']
In [42]: dic
Out[42]: {'city': 'BJ', 'name': 'Jmilk'}

popitem() 將隨機(jī)一個(gè)字典鍵值對(duì)彈出(刪除并返回)

popitem(…)

D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
以tuple(k,v)的形式刪除字典的一個(gè)元素,并返回。需要一個(gè)接受返回的對(duì)象。若字典為空,則報(bào)錯(cuò)。

In [32]: dic
Out[32]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk', 'sex': 'man'}
In [34]: dic.popitem()
Out[34]: ('city', 'BJ')
In [35]: dic.popitem()
Out[35]: ('age', 23)

pop()彈出key映射的value

pop(…)

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised

In [39]: dic
Out[39]: {'name': 'Jmilk', 'sex': 'man'}
In [40]: dic.pop('name')
Out[40]: 'Jmilk'

一般情況下,當(dāng)字典為空時(shí)調(diào)用了D.pop()方法的化會(huì)觸發(fā)一個(gè)KeyError。但是也可以通過(guò)下面的調(diào)用方式來(lái)添加key不存在時(shí)的返回默認(rèn)值。

當(dāng)Key不存在時(shí),返回默認(rèn)值,避免報(bào)錯(cuò):

In [20]: dic
Out[20]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [21]: dic.pop('sex','man')
Out[21]: 'man'

clear()清空字典中的所有項(xiàng)

clear(…)

D.clear() -> None. Remove all items from D.

清空所有項(xiàng)目,返回None。

In [58]: dic
Out[58]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [59]: dic.clear()
In [60]: dic
Out[60]: {}

修改

簡(jiǎn)單的修改dict中key映射的value值

格式:“`dictName[key] = newValue

In [50]: dic['city'] = 'GZ'
In [51]: dic
Out[51]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}

update()更新字典

update(…)

D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k]
If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]

使用另一個(gè)字典來(lái)更新一個(gè)字典,通過(guò)匹配的key來(lái)更新value。

In [137]: dic
Out[137]: {'age': 23, 'city': 'BJ', 'name': ['jmilk']}
In [138]: newInfo = {'name':'chocolate','age':22,'city':'ZH'}
In [139]: dic.update(newInfo)
In [140]: dic
Out[140]: {'age': 22, 'city': 'ZH', 'name': 'chocolate'}

當(dāng)然,也可以只更新其中若干個(gè)value。

字典的復(fù)制

copy()淺復(fù)制

字典的淺復(fù)制與List的淺復(fù)制類(lèi)似,都只是對(duì)引用對(duì)象的copy。

In [107]: dic1 = dic.copy()
In [108]: dic,dic1
Out[108]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']},
 {'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']})
In [109]: dic1['age'] = 24
In [110]: dic,dic1
Out[110]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk', 'chocolate']},
 {'age': 24, 'city': 'BJ', 'name': ['jmilk', 'chocolate']})

注意:對(duì)淺copy得到的新字典中的value做替換操作(替換整個(gè)value),是不會(huì)影響到元字典的。但是如果對(duì)新字典中的value做了修改操作(修改其中一部分),就會(huì)影響到原字典。如下:

In [111]: dic1['name'].remove('chocolate')
In [112]: dic,dic1
Out[112]:
({'age': 23, 'city': 'BJ', 'name': ['jmilk']},
 {'age': 24, 'city': 'BJ', 'name': ['jmilk']})

因?yàn)閮蓚€(gè)key的id指向同一個(gè)數(shù)據(jù)對(duì)象,對(duì)數(shù)據(jù)對(duì)象做了修改(改變數(shù)據(jù)對(duì)象)后就會(huì)都受到影響。但替換(改變引用對(duì)象)整個(gè)value,即將新字典中key的id指向另一個(gè)數(shù)據(jù)對(duì)象,不會(huì)改變?cè)瓟?shù)據(jù)對(duì)象。

深copy和淺copy的詳細(xì)介紹,請(qǐng)參考:http://chabaoo.cn/article/172490.htm

類(lèi)型轉(zhuǎn)換

item() 將每個(gè)字典項(xiàng),轉(zhuǎn)化為T(mén)uple和List的混合數(shù)據(jù)類(lèi)型
items(…)
D.items() -> list of D's (key, value) pairs, as 2-tuples

In [42]: dic
Out[42]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [43]: dic.items()
Out[43]: [('city', 'BJ'), ('age', 23), ('name', 'Jmilk')]
In [44]: [x for param in dic for x in dic]  #嵌套列表降維
Out[44]: ['city', 'age', 'name', 'city', 'age', 'name', 'city', 'age', 'name']

因?yàn)榉祷氐氖荓ist類(lèi)型對(duì)象,所以可以使用索引操作符。

In [46]: dic.items()[0]
Out[46]: ('city', 'BJ')
In [48]: dic.items()[0][0]
Out[48]: 'city'

由此可以看出,可以對(duì)一個(gè)對(duì)象做 操作,主要由對(duì)象的類(lèi)型來(lái)決定。

成員關(guān)系

判斷一個(gè)kay是否存在dict中

In [56]: dic
Out[56]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}
In [57]: dic.has_key('age')
Out[57]: True

True ⇒ key存在dict中
False ⇒ key不存在dict中

使用成員關(guān)系運(yùn)算符判斷

成員資格:'age' in dic只能通過(guò)key的成員關(guān)系來(lái)判斷。

In [45]: dic
Out[45]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [46]: 'age' in dic
Out[46]: True
In [47]: 'age' not in dic
Out[47]: False

字典的遍歷

In [62]: dic
Out[62]: {'age': 23, 'city': 'GZ', 'name': 'Jmilk'}
In [63]: for key_num,val_num in dic.items():
  ....:   print key_num,val_num
  ....:
city GZ
age 23
name Jmilk

格式化輸出value

通過(guò)格式化%(key)format來(lái)輸出映射的value

In [53]: dic
Out[53]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'}
In [54]: print 'ple call me %(name)s,Thx!' % dic
ple call me Jmilk,Thx!
In [55]: print 'I m %(age)d years old.' % dic
I m 23 years old.

只要key in dict,就能使用任意的轉(zhuǎn)換說(shuō)明符。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python列表(list)操作技巧總結(jié)》、《Python字典操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python try except異常捕獲機(jī)制原理解析

    Python try except異常捕獲機(jī)制原理解析

    這篇文章主要介紹了Python try except異常捕獲機(jī)制原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 基于Python2、Python3中reload()的不同用法介紹

    基于Python2、Python3中reload()的不同用法介紹

    今天小編就為大家分享一篇基于Python2、Python3中reload()的不同用法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python操作字典類(lèi)型的常用方法(推薦)

    python操作字典類(lèi)型的常用方法(推薦)

    下面小編就為大家?guī)?lái)一篇python操作字典類(lèi)型的常用方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法

    Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法

    今天小編就為大家分享一篇Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • opencv+python識(shí)別七段數(shù)碼顯示器的數(shù)字(數(shù)字識(shí)別)

    opencv+python識(shí)別七段數(shù)碼顯示器的數(shù)字(數(shù)字識(shí)別)

    本文主要介紹了opencv+python識(shí)別七段數(shù)碼顯示器的數(shù)字(數(shù)字識(shí)別),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python如何按順序批量修改文件名

    python如何按順序批量修改文件名

    這篇文章主要介紹了python如何按順序批量修改文件名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • keras 解決加載lstm+crf模型出錯(cuò)的問(wèn)題

    keras 解決加載lstm+crf模型出錯(cuò)的問(wèn)題

    這篇文章主要介紹了keras 解決加載lstm+crf模型出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • postman傳遞當(dāng)前時(shí)間戳實(shí)例詳解

    postman傳遞當(dāng)前時(shí)間戳實(shí)例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于postman傳遞當(dāng)前時(shí)間戳知識(shí)點(diǎn)相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Python串口通信的接收與發(fā)送的實(shí)現(xiàn)

    Python串口通信的接收與發(fā)送的實(shí)現(xiàn)

    串口通信是指通過(guò)串口進(jìn)行數(shù)據(jù)傳輸?shù)囊环N通信方式,本文就來(lái)介紹一下Python串口通信的接收與發(fā)送的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼

    django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼

    本篇文章主要介紹了django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論