1 字典介绍
python内置字典,dict的支持,相对于JAVA的map,
Ø 使用键-值(KEY-VALUE)存储,键和值缺一不可。
Ø 具有极快的查找速度。
Ø 使用大括号定义,键与值用冒号隔开,不同元素使用逗号隔开。
Ø 每个元素的键不可重复
Ø 字典没有顺序
Ø 通过键来访问
Ø 使用中括号访问,键不存在则报错
Ø 可以通过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'] ‘对应键不存在则报错
---------------------------------------------------------------------------
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()清除字典内容
In [18]: stus
Out[18]: {'name': 'ww', 'age': 33, 'add': 'beijing'}
字典常见函数
len()测量字典键值对的个数
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-字典函数.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("下标号:%d,值:%s"%(i,names[i]))
i+=1
'''
print("="*30)
for i,item in enumerate(names,1): #enumerate枚举,enumerate(names,1)表示从1开始计数
print("%d\t%s"%(i,item))
2 可变类型和不可变类型
不可变类型:数值(值不可变,引用可变)、字符串、元组
可变类型:列表,字典
在字典中,可变类型不能作为字典的键
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]