字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值对 用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中,如
Alien={'color':'black','age':'3','weight':'100cm'}
字典键的特性
是mutable可以修改的
value可以是任何数据类型,但key不行
key 可以是hash类型,最常用的效率也最高的是数字或字符串
key:value 及键值对的形式存储,每个key都是唯一的(若相同,后面的key会覆盖前面的key)
根据键查找的效率非常高
字典的特性称之为map(映射)
字典定义
dict1 = {}
dict2 = {'name': 'Jack', 'age': 40}
len(字典) 字典长度 返回字典元素个数,即键的总数
1. 访问键值
Alice={'color':'black','age':'3','weight':'100cm'}
print (Alien[‘weight’])
== 100cm
判断字典中是否有key
key in 字典 返回布尔类型
1.2增加键-值
Alice={'color':'black', 'age':'3', 'weight':'100cm'}
Alice['length'] = '160cm' *增加键值,注意用[],里面要加引号
Alice['sex']='女'
Print (Alice)
== {'color': 'black', 'age': '3', 'weight': '45kg', 'length': '160cm', 'sex': '女'}
Alice.update({'键':'值', '键':'值'}) 用update增加键-值元素
或 Alice.update(另一个字典)
Alice = {}
Alice['length']='160cm'
Alice.update({'length':'170', 'age':'20'})
print(Alice)
1.3 创建一个空字典,增加键-值
Alice={}
Alice['length'] = '160cm'
Alice['sex']='女'
Print (Alice)
=={'length': '160cm', 'sex': '女'}
1.4 修改字典中的值
Alice={'color':'black','age':'3','weight':'100cm'}
Alice['color'] = 'red' * 对键从新赋值
Print (Alice)
== Alice={'color':’red,'age':'3','weight':'100cm'}
1.5 删除一对键-值
Del 删除字典
Alice={'color':'black','age':'3','weight':'100cm'}
Del Alice['color'] *永远删除键and值
Print (Alice)
== Alice={'color':'black','age':'3'}
清空字典
Alice.clear()
del dict 和 dict 重新赋值,2个dict不是同一个元素,id(dict)的值不一样
pop()删除字典键
x = {'a':1,'b':2}
x.pop('a') 同时删除键名和值,同时返回字典值 1
1.6 类似对象组成的字典
若较长的字典可以使用换行
Alice={'color':'black',
'age':'3',
'weight':'100cm', * 保留逗号,为以后添加键值做好准备
}
Print (Alice)
== Alice={'color':’red,'age':'3','weight':'100cm'}
1.7 遍历字典
1.7.1 遍历所有的键和值 *for X,Y in 元组.items()
mitty={'first_name':'Mitty','last_name':'Chan','city':'Shanghai','age':'25'}
for key,values in mitty.items():
print ('My '+ key +' is '+ values)
==
My first_name is Mitty
My last_name is Chan
My city is Shanghai
My age is 25
1.7.2 遍历字典中所有的键 keys()
在不需要使用字典中的值时, 使用keys()是很有用的;
mitty={'first_name':'Mitty','last_name':'Chan','city':'Shanghai','age':'25'}
For mykey in mitty.keys():
Print (mykey)
==first_name last_name city age
1.7.3 遍历字典中所有的值 - values()
mitty={'first_name':'Mitty','last_name':'Chan','city':'Shanghai','age':'25'}
For myvalues in mitty.values():
Print (myvalues)
== Mitty Shanghai Chan 25
1.7.4 遍历字典中所有的值时,去重复项 - set()
mitty={'first_name':'Mitty','last_name':'Chan','city':'Shanghai','age':'25','hair':'25'}
for myvalues in set(mitty.values()):
print (myvalues) )
== Mitty Shanghai Chan 25 * age 和 hair 的值都为25,但只会输出一个25
1.8 字典类型的完美打印
import pprint
pprint.pprint()
上面是正常打印
下面的是完美打印,一种美观打印方式
在一个字典里再套字典。
familyinfo = {
"family name":"Python",
"family structure":[
{"name":"Taro", "age":32, "sex":"male"},
{"name":"Hanako", "age":31, "sex":"female"},
{"name":"Ichiro", "age":5, "sex":"male"}
],
"address":[
{"country":"Japan"},
{"administrative_area":"Tokyo"},
{"locality":"Chuohku"}
],
"phone number":"03-0000-0000"
}
想要打印“Taro”的话
print(familyinfo["family structure"][0]["name"])