python基礎(chǔ)教程之字典操作詳解
字典
dictionary
1.鍵值對的集合(map)
2.字典是以大括號“{}”包圍的數(shù)據(jù)集合
3.字典是無序的,在字典中通過鍵來訪問成員。 可變的,可嵌套,可以原處修改擴(kuò)展等,不產(chǎn)生新的字典
4.字典的鍵,可以是字符串(大小寫敏感),數(shù)字常量或元組(不可變類型),同一個字典的鍵可以混用類型。字典的鍵必須是可哈希的
元組作為鍵的條件是,元組內(nèi)的值都是不可變類型
a = (1,2) #可以作為鍵
b = (1,2,[3,4]) #不可以
5.字典的值可以是任意類型,可以嵌套,可以自由修改
聲明
創(chuàng)建字典的幾種方式:
1.基本
d = {} #空字典
d = {'name':'tom', 'age':22}
#等價(jià)
d = {}
d['name'] = 'tom'
d['age'] = 22
2.dict
d = dict() #空
d = dict(name='tom', age=22)
d = dict([('name','tom'), ('age',22)])
#等價(jià)
keys = ['name','age']
values = ['tom', 22]
d = dict(zip(keys,values))
3.fromkeys
不指定default_value的話,默認(rèn)None
>>> dict.fromkeys(['name','age'],'default_value')
{'age': 'default_value', 'name': 'default_value'}
基本操作
0.獲取幫助
help(dict)
1.判定鍵是否存在于字典中
if k in d: #k not in
dosomething()
2.讀取
d = {'a':1, 'b':2}
print d['a'] #得到1,但是若鍵不存在,將引發(fā)異常KeyError。慎用,建議不使用
print d.get('c', 3) #得到3,get方法,若是鍵不存在,返回第二個參數(shù)default_value.若是沒有設(shè)default_value返回None
處理missing-key錯誤三種方式,根據(jù)具體需要
if k in d:
print d[k]
try:
print d[k]
except KeyError:
dosomething()
print d.get(k, default)
#等價(jià) d[k] if k in d else default
3.遍歷
方式1:
for key in d:
print key, d[key]
#等價(jià) for key in d.keys()
方式2:
for key,value in d.items():
print key, value
4.修改方式1:某個鍵值對
d['key'] = 'newvalue'
方式2:批量添加或更新
#另一個字典
d.update({'key':'newvalue'}) #這里支持一整組值
#元組列表
d.update( [ ('a',1), ('b',2) ] ) #每個元組兩個元素,(key,value)
#**key
d.update(c=3, e=4)
5.刪除
del d['key']
value = d.pop('key') #刪除并返回值
d.clear() #清空
6.其他:
len(d) #長度
d.keys() #key列表
d.values() #value列表
d.items() #(key, value) 列表
c = d.copy() #淺拷貝
#返回迭代器,節(jié)省內(nèi)存
d.iterkeys()
d.itervalues()
d.iteritems()
d.setdefault('name', 'ken') #若原來沒有,設(shè)置,否則原值不變
其他
1.字典排序按照key排序
keys = d.keys()
keys.sort()
for key in keys:
print d.get(key)
按照value進(jìn)行排序
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
另外:
#假設(shè)d為字典
sorted(d) #返回同 sorted(d.keys()),返回的是key排序
2.自定義對象作為key
必須:
def __hash__(self):
pass
def __eq__(self, other):
pass
3.字典拷貝淺拷貝:
c = d.copy() #
深拷貝必須用copy模塊
form copy import deepcopy
c = deepcopy(d)
4.一種使用場景假設(shè)有一個很大的列表l,假設(shè)10w條記錄
有一個小列表b,要判斷b中元素是否在l中
如果:
for i in b:
if i in l:
dosomething()
你會發(fā)現(xiàn)非常非常慢...因?yàn)榈诙€in語句,會遍歷10w條….
改進(jìn):
d = dict.fromkeys(l)
for i in b:
if i in d:
dosomething()
#空間換時間,O(n) -> O(1)
- Python字典常見操作實(shí)例小結(jié)【定義、添加、刪除、遍歷】
- Python 字典(Dictionary)操作詳解
- Python中字典創(chuàng)建、遍歷、添加等實(shí)用操作技巧合集
- Python中字典和JSON互轉(zhuǎn)操作實(shí)例
- Python3實(shí)現(xiàn)的字典遍歷操作詳解
- Python字典及字典基本操作方法詳解
- 整理Python最基本的操作字典的方法
- python 字典操作提取key,value的方法
- python字典的常用操作方法小結(jié)
- python基礎(chǔ)入門詳解(文件輸入/輸出 內(nèi)建類型 字典操作使用方法)
- python中的字典操作及字典函數(shù)
- Python基礎(chǔ)之字典常見操作經(jīng)典實(shí)例詳解
相關(guān)文章
如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別)
這篇文章主要介紹了將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識別),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Python實(shí)現(xiàn)PDF轉(zhuǎn)Word的多種方式總結(jié)
這篇文章主要為大家詳細(xì)介紹了三種Python實(shí)現(xiàn)PDF文件轉(zhuǎn)Word文檔的方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11Pyinstaller打包Scrapy項(xiàng)目的實(shí)現(xiàn)步驟
這篇文章主要介紹了Pyinstaller打包Scrapy項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python批量從es取數(shù)據(jù)的方法(文檔數(shù)超過10000)
今天小編就為大家分享一篇python批量從es取數(shù)據(jù)的方法(文檔數(shù)超過10000),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python中apply函數(shù)的用法實(shí)例教程
這篇文章主要介紹了Python中apply函數(shù)的用法,配合實(shí)例解說,可加深讀者對apply函數(shù)的理解,需要的朋友可以參考下2014-07-07樹莓派使用python-librtmp實(shí)現(xiàn)rtmp推流h264的方法
今天小編就為大家分享一篇樹莓派使用python-librtmp實(shí)現(xiàn)rtmp推流h264的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解,本文講解了使用sys模塊獲得腳本的參數(shù)、處理模塊、使用sys模塊操作模塊搜索路徑、使用sys模塊查找內(nèi)建模塊、使用sys模塊查找已導(dǎo)入的模塊等使用案例,需要的朋友可以參考下2015-05-05