1 字典介紹
python內(nèi)置字典,dict的支持,相對于JAVA的map,
Ø 使用鍵-值(KEY-VALUE)存儲,鍵和值缺一不可。
Ø 具有極快的查找速度。
Ø 使用大括號定義,鍵與值用冒號隔開,不同元素使用逗號隔開。
Ø 每個元素的鍵不可重復(fù)
Ø 字典沒有順序
Ø 通過鍵來訪問
Ø 使用中括號訪問,鍵不存在則報錯
Ø 可以通過get訪問,鍵不存在則返回null,不報錯
Ø 在字典中,可變類型不能作為字典的鍵
In [1]: d={'michae':90,'bob':75,'tracy':85} ‘定義一個字典
In [2]: d['michae'] ‘讀取一個鍵的值
Out[2]: 90
In [3]: d['bob']
Out[3]: 75
In [6]: stus['name']='ww' ‘修改鍵的值。
In [7]: stus
Out[7]: {'name': 'ww', 'age': 33, 'sex': 'man'}
In [11]: stus['add'] ‘對應(yīng)鍵不存在則報錯
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-11-2dad78060bfd> in <module>
----> 1 stus['add']
KeyError: 'add'
In [9]: stus.get('name') ‘通過get訪問
Out[9]: 'ww'
In [10]: stus.get('add') ‘鍵不存在,不報錯,返回null
In [13]: stus['add']='beijing' ‘字典的新增:不存在則新增,存在則修改
In [14]: stus
Out[14]: {'name': 'ww', 'age': 33, 'sex': 'man', 'add': 'beijing'}
In [15]: "name" in stus ‘字典的查詢
Out[15]: True
In [19]: stus['name']
Out[19]: 'ww'
In [17]: del stus['sex'] ‘字典的刪除,clear()清除字典內(nèi)容
In [18]: stus
Out[18]: {'name': 'ww', 'age': 33, 'add': 'beijing'}
字典常見函數(shù)
len()測量字典鍵值對的個數(shù)
In [50]: dict={"name":'ls',"sex":"m"}
In [51]: len(dict)
Out[51]: 2
keys()返回字典所有KEY的列表
In [53]: dict
Out[53]: {'name': 'ls', 'sex': 'm'}
In [54]: dict.keys()
Out[54]: dict_keys(['name', 'sex'])
values()返回字典所有值的列表
In [53]: dict
Out[53]: {'name': 'ls', 'sex': 'm'}
In [55]: dict.values()
Out[55]: dict_values(['ls', 'm'])
items()返回字典鍵-值
In [56]: dict.items()
Out[56]: dict_items([('name', 'ls'), ('sex', 'm')])
例
stu={"name":"lisi","age":33}
for item in stu.items():
print(item)
print("="*30)
for item in stu.items():
print("key:%s\tvalue:%s"%item) #字典兩部分,直接分開輸出
D:\python\day4>python 02-字典函數(shù).py
('name', 'lisi') ‘返回元組
('age', 33)
==============================
key:name value:lisi
key:age value:33
has_key判斷鍵是否在字典中,python2中有效
stu = {"name": "lisi", "age": 33}
print("=" * 30)
key = "name"
if key in stu:
print("%s在字典中" % key)
print("=" * 30)
if stu.has_key(key):
print("%s在字典中" % key)
集合的讀取
names=['zs','ls','ww','sl']
name='hello world'
name2=('zs','ls','ww','sl')
j=0
i=0
print("序號\t姓名")
for i in name2:
print("%d\t%s"%(j,i))
j+=1
'''
while i < len(names):
print("下標(biāo)號:%d,值:%s"%(i,names[i]))
i+=1
'''
print("="*30)
for i,item in enumerate(names,1): #enumerate枚舉,enumerate(names,1)表示從1開始計數(shù)
print("%d\t%s"%(i,item))
2 可變類型和不可變類型
不可變類型:數(shù)值(值不可變,引用可變)、字符串、元組
可變類型:列表,字典
在字典中,可變類型不能作為字典的鍵
In [7]: a=[1,2]
In [8]: b=a
In [9]: b
Out[9]: [1, 2]
In [10]: b+=[3,4]
In [11]: b
Out[11]: [1, 2, 3, 4]
In [12]: a
Out[12]: [1, 2, 3, 4]
In [13]: del a
In [14]: del b
In [15]: a=[1,2]
In [16]: b=a
In [17]: b=b+[3,4] #可變類型中a+=b <> a=a+b ,不可變類型中a+=b 等于 a=a+b
In [18]: a
Out[18]: [1, 2]
In [19]: b
Out[19]: [1, 2, 3, 4]