字典(Dictionary)是由键和对应值成对组成的数据结构,它通常也被称为映射,或者叫关联数组,也有叫哈希表的。其中值可以取任何数据类型,但键必须是不可变的并且是唯一的,如字符串,数字或元组。
15.1字典声明
字典可通过大括号{}或dict()进行声明。里面没有元素时,为空字典。字典的每个键值key=value对用冒号:分割。字典元素可以同时存在不同的数据类型。键一般是唯一的,如果重复最后的一个键值对会替换后面的,值不需要唯一。
#用{}声明一个空字典
d={}
print(type(d),d)
#用dict()声明一个空字典
d=dict()
print(type(d),d)
#用{}声明月份对应值
months={Jan:1,April:4}
print(months)
#用dict声明星期对应值
weekday=dict({1:Mon,2:Tues})
print(weekday)
15.2增改
字典中的键不可改变,值可以。用dict[key]的方式添加新的内容,如果指定key已经存在,则修改对应的值内容。用dict.setdefault(key,default=None)的方式添加内容,可以key不存在,就添加,否则不做任何操作。
#添加内容
weekday={0:Sun,1:Mon}
weekday[2]=Wed
print(weekday)
#修改内容
weekday[2]=Tues
print(weekday)
#添加内容
weekday.setdefault(3,Wed)
print(weekday)
通过update(dict)方法在字典末尾一次性追加另一个字典的内容。
#添加另外的字典内容
weekday={0:Sun,1:Mon}
weekday.update({2:Tues,3:Wed})
print(weekday)
15.3删除
通过pop(key)删除指定key对应的内容,返回值。如果指定的key不存在,会报错。
#删除字典内容,返回值
student={name:高强,age:16,class:三一班}
v=student.pop(class)
print(student)
print(v)
可通过deldict[key]删除指定key对应的内容,如果key不存在,会报错。deldict删除整个字典,删除后无法再访问。另外可通过clear()清空字典内容。
#删除字典内容,返回值
student={name:高强,age:16,class:三一班}
delstudent[class]
print(student)
#清空内容
student.clear()
print(student)
#删除整个字典,不可再访问
delstudent
15.4访问
通过dict.get(key,default=None)访问字典元素的值,如果指定的key不存在,返回默认值。
也可以通过dict[key]的方式访问字典的元素值,如果key不存在,会报错。
#访问字典元素值
student={name:高强,age:16,class:三一班}
print(student.get(name))
print(student[age])
可用in判断key是否存在,是返回True,否则返回False。notin为相反方式。
#判断是否存在key
weekday={Sun:0,Sat:6,Fri:5}
ifSuninweekday:
weekday.pop(Sun)
print(weekday)
15.5遍历
字典由键值对组成,可用len(dict)计算字典键的个数(既字典长度),可用keys()方法获取字典的所有键内容并遍历,可用values()方法获取字典的所有值内容并遍历。如果要同时获取键和值的所有内容,可用items()方法。
#计算字典长度
weekday={Sun:0,Sat:6,Fri:5}
print(len(weekday))
#遍历所有键内容
forkinweekday.keys():
print(k)
#遍历所有值内容
forkinweekday.values():
print(k)
#同时遍历键和值内容
fork,vinweekday.items():
print(k,v)
15.6转换
开发程序的过程中,经常会用到json数据,而json可与dict字典进行转换。用dumps()函数将dict数据转化成json数据,用loads()函数将json数据转化成dict数据。
#引入json模块
importjson
#字典内容转为json
dict1={name:cow,age:22,gender:male}
json_data=json.dumps(dict1)
print(type(json_data),json_data)
#json内容转为字典
json_data={id:,name:,email:
xx.