一.什么是字典

字典是python里的一种数据类型,特点是元素的无序性,和键key的唯一性。字典的创建方法是{key:values},字典里的键key只能是不可变的数据类型(整型,字符串或者是元组),值values可以是任何数据类型。字典里的一组key:values叫做一个键值对item。

二.字典的基本操作

创建一个字典

dic = {'name':'joy','age':'28','hobby':{'girl_name':'xiaohan','age':23},'is_handsome':True}

另外一种创建方式,通过关键字创建 dict

代码段

dic2 = dict((('name','joy'),))

print("元组的方式创建字典:",dic2)

dic3 = dict([['name','joy'],])

print("列表的方式创建字典:",dic3)

  输出结果

元组的方式创建字典: {'name': 'joy'}
列表的方式创建字典: {'name': 'joy'}

三.查看字典 keys、values、items

代码段

dic = {'name':'chenzhang','age':27}

dic1 = dic['age']     #

print("通过键去取值:",dic1)

dic5 = {'age':18,'name':'joy','hobby':'boy'}

print("通过键去取值:",dic5['hobby'])

dic6 = {'age':18,'name':'joy','hobby':'boy'}

print("使用列表的格式,查看字典的键:",list(dic6.keys()))

print("使用列表的格式,查看字典的值:",list(dic6.values()))

print("用列表的格式,查看字典的键值对:",list(dic6.items()))

  输出结果

通过键去取值: 27
通过键去取值: boy
使用列表的格式,查看字典的键: ['age', 'name', 'hobby']
使用列表的格式,查看字典的值: [18, 'joy', 'boy']
用列表的格式,查看字典的键值对: [('age', 18), ('name', 'joy'), ('hobby', 'boy')]

四.新增键值对 setdefault 

代码段

dic4 = {'name':'joy'}
dic4['age'] = 18
print("新增键值对:",dic4)

ret = dic4.setdefault('age',32)
print("如果键存在,不修改键值对,返回原有值:",ret)

ret = dic4.setdefault('shengao',168)
print("如果键不存在,新增键值对:",dic4)

  输出结果

新增键值对: {'name': 'joy', 'age': 18}
如果键存在,不修改键值对,返回原有值: 18
如果键不存在,新增键值对: {'name': 'joy', 'age': 18, 'shengao': 168}

  五.修改字典 fromkeys

代码段

dic7 = {'name':'陈璋','age':'23','hobby':'girl'}
dic7['age'] = 27                # 通过键去修改值
print("通过键去修改值:",dic7)

dic13=dict.fromkeys(['host1','host2','host3'],'test')
print("使用formkeys方法,给每一键加上(test)值:",dic13)

dict14= dict.fromkeys(['host1','host2','host3'],['test1','test2'])
print("使用formkeys方法,给每一键加上(列表)值:",dict14)

dict14['host2'][1]= 'test3'
print("改字典中host2中test2的值:",dict14)

  输出结果

通过键去修改值: {'name': '陈璋', 'age': 27, 'hobby': 'girl'}
使用formkeys方法,给每一键加上(test)值: {'host1': 'test', 'host2': 'test', 'host3': 'test'}
使用formkeys方法,给每一键加上(列表)值: {'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']}
改字典中host2中test2的值: {'host1': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host3': ['test1', 'test3']}

六.更新 update

代码段

dic8 = {'age':18,'name':'joy','hobby':'girl'}
dic9 = {'shengao':180,'name':'joychen'}
dic8.update(dic9)
print("更新,修改已有的键值对,增加没有的键值对:",dic8)

  输出结果

更新,修改已有的键值对,增加没有的键值对: {'age': 18, 'name': 'joychen', 'hobby': 'girl', 'shengao': 180}

 七.删除 clear pop popitem del

代码段

dic10 = {'name':'joychen','age':18,'class':1}
dic10.clear()
print("清空字典:",dic10)

dic12 = {'name':'joychen','age':18,'class':1}
ret = dic12.pop('age')
print("删除字典中指定键值对,并返回该键值对的值:",ret)
print("删除后的结果:",dic12)

dic13 = {'name':'joychen','age':18,'class':1}
a = dic13.popitem()
print("随机删除某组键值对,并以元组方式返回值:",a)
print("删除后的结果:",dic13)

del dic13  # 删除这个字典

  输出结果

清空字典: {}
删除字典中指定键值对,并返回该键值对的值: 18
删除后的结果: {'name': 'joychen', 'class': 1}
随机删除某组键值对,并以元组方式返回值: ('class', 1)
删除后的结果: {'name': 'joychen', 'age': 18}

七.多层嵌套大字典查询

代码段

 # 种类大字典
 class_dict = {"蔬菜":{"苦瓜":["很苦","有降火功效"],
                     "南瓜":["比较甜","个头也比较大"],},
               "水果":{"西瓜":["很甜","形状是圆的"],
                     "橘子":["清甜可口","包含多种维生素"]},
               "电器":{"空调":["凉爽","耗电"],
                     "洗衣机":["快速洗衣","节省时间"],
                     "微波炉":["快速加热","方便快捷"]},
               "交通":{"自行车":["上坡费劲","适合短程"],
                     "摩托车":["速度快","不安全"],
                     "汽车":["适应多种天气","价格昂贵"]}
               }
 aa = class_dict["交通"]["摩托车"][1]  #能过键去找值,最后通过索引号找到对应的信息
 print(aa)

  输出结果

不安全

  

版权声明:本文为joy-sir原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/joy-sir/p/12218702.html