python元組和字典的內建函數(shù)實例詳解
本文實例講述了python元祖和字典的內建函數(shù)。分享給大家供大家參考,具體如下:
元組Tuple
元組是序列類型一種,也是不可變類型數(shù)據結構,對元組修改后會生成一個新的元組。所以Tuple對象并沒有太多的內置方法。
count() 查詢一個元素在Tuple中的數(shù)量
count(…)
T.count(value) -> integer – return number of occurrences of value
返回一個value在Tuple出現(xiàn)的次數(shù),即個數(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() 查詢元素在Tuple中的索引號
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ù)據類型使用鍵值對的映射關系來關聯(lián)數(shù)據。
創(chuàng)建一個字典對象
簡單的創(chuàng)建
In [18]: dic = {'name':'Jmilk','age':23,'city':'BJ'}
fromkey()使用keys來創(chuàng)建字典
fromkeys(…)
dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.
通過一個keys的序列來創(chuàng)建字典,可以指定keys映射的value,默認為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,當key不存在時,返回默認值
get(…)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
自動添加(字典的默認值):自動添加是字典數(shù)據類型的特性,即使一個Key起初不存在于字典中,也可為Key分配一個值,以此來建立新的項。
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ù)去獲取一個不存在的key對應的value時,會報錯。
len(dictName)獲取字典長度
len(…)
len(object) -> integer
Return the number of items of a sequence or mapping.
len()是Python的內建函數(shù),可以獲取序列或字典的長度,即元素的個數(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']
添加字典項
通過賦值為字典添加一個項
格式: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'}
通過setdefault()增加
setdefault(…)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
當key存在時,call D.get(k,d)方法,即獲取key映射的value。當key不存在時,執(zhí)行D[k]=d,即為dict增加一個新的元素。
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'}
刪除字典項
del語句,刪除字典中key對應的一個項
del語句可以操作所有的迭代器對象。
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() 將隨機一個字典鍵值對彈出(刪除并返回)
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)的形式刪除字典的一個元素,并返回。需要一個接受返回的對象。若字典為空,則報錯。
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.pop()方法的化會觸發(fā)一個KeyError。但是也可以通過下面的調用方式來添加key不存在時的返回默認值。
當Key不存在時,返回默認值,避免報錯:
In [20]: dic Out[20]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'} In [21]: dic.pop('sex','man') Out[21]: 'man'
clear()清空字典中的所有項
clear(…)
D.clear() -> None. Remove all items from D.
清空所有項目,返回None。
In [58]: dic Out[58]: {'age': 23, 'city': 'BJ', 'name': 'Jmilk'} In [59]: dic.clear() In [60]: dic Out[60]: {}
修改
簡單的修改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]
使用另一個字典來更新一個字典,通過匹配的key來更新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'}
當然,也可以只更新其中若干個value。
字典的復制
copy()淺復制
字典的淺復制與List的淺復制類似,都只是對引用對象的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']})
注意:對淺copy得到的新字典中的value做替換操作(替換整個value),是不會影響到元字典的。但是如果對新字典中的value做了修改操作(修改其中一部分),就會影響到原字典。如下:
In [111]: dic1['name'].remove('chocolate') In [112]: dic,dic1 Out[112]: ({'age': 23, 'city': 'BJ', 'name': ['jmilk']}, {'age': 24, 'city': 'BJ', 'name': ['jmilk']})
因為兩個key的id指向同一個數(shù)據對象,對數(shù)據對象做了修改(改變數(shù)據對象)后就會都受到影響。但替換(改變引用對象)整個value,即將新字典中key的id指向另一個數(shù)據對象,不會改變原數(shù)據對象。
深copy和淺copy的詳細介紹,請參考:http://chabaoo.cn/article/172490.htm
類型轉換
item() 將每個字典項,轉化為Tuple和List的混合數(shù)據類型
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']
因為返回的是List類型對象,所以可以使用索引操作符。
In [46]: dic.items()[0] Out[46]: ('city', 'BJ') In [48]: dic.items()[0][0] Out[48]: 'city'
由此可以看出,可以對一個對象做 操作,主要由對象的類型來決定。
成員關系
判斷一個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中
使用成員關系運算符判斷
成員資格:'age' in dic只能通過key的成員關系來判斷。
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
通過格式化%(key)format來輸出映射的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,就能使用任意的轉換說明符。
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結》、《Python列表(list)操作技巧總結》、《Python字典操作技巧匯總》、《Python數(shù)據結構與算法教程》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
基于Python2、Python3中reload()的不同用法介紹
今天小編就為大家分享一篇基于Python2、Python3中reload()的不同用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python實現(xiàn)高斯函數(shù)的三維顯示方法
今天小編就為大家分享一篇Python實現(xiàn)高斯函數(shù)的三維顯示方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12opencv+python識別七段數(shù)碼顯示器的數(shù)字(數(shù)字識別)
本文主要介紹了opencv+python識別七段數(shù)碼顯示器的數(shù)字(數(shù)字識別),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01