字典(Dictionary)
字典(Dictionary) 是一个无序、可变和有索引的集合。在 Python 中,字典用花括号{}编写,拥有键和值。'''标签:classroom,Python,笔记,Amy,Book,key,print,字典 From: https://www.cnblogs.com/wujiaqing/p/16744963.html
单级实例操作
classroom = {'Jack':12,'Amy':11,'Jane':10,'Tom':7}
# 查找:根据key查找对应value
# 第一种方式若查找的key不存在会报错,so除非确定查找的key存在,否则用get方式查找,存在就返回值,不存在就返回None
print(classroom['Amy']) # 返回:11
print(classroom.get('Amy')) # 返回:11
print(classroom.get('Bob')) # 返回:None
# 判断某个key在不在字典中
print('Ben' in classroom) # 存在就返回True,不在就返回False
# 修改:如果key已存在,则修改
classroom['Amy']='12'
# 新增:如果key不存在,则新增
classroom['Emma']='12'
# 删除:del是python通用的,不是字典独享的
del classroom['Tom']
classroom.pop('Jane')
classroom.popitem() # 随机删除,尽量不用,随机删是想干啥...
print(classroom)
多级字典嵌套及操作
Book = {
'中国':{
'长相思':['仙侠小说','推荐5星,超爱的,你们一定要去看!!!'],
'再别康桥':['文学类','推荐4星'],
'一年级语文辅导':['工具书','推荐3星']
},
'美国':{
'一年级英语辅导':['工具书','推荐3星'],
'少有人走的路':['文学类','推荐4星,不同阶段看会有不同感受'],
'杀死一只知更鸟':['文学类','推荐X星,没读过'],
},
'英国':{
'傲慢与偏见':['文学类','推荐4星'],
'暮光之城':['小说','推荐5星,看过电影感觉还不错']
}
}
# 查找
print(Book['美国']['一年级英语辅导'])
# 如果字典里面嵌套有字典,无法通过 get() 直接获取 value:
print(Book.get('美国').get('一年级英语辅导'))
print(Book.get('英国').get('暮光之城'))
# 增加
Book['英国']['月亮与六便士'] = ['文学小说','推荐5星,触发思考']
print(Book)
# 修改
Book['英国']['月亮与六便士'] = ['文学小说','推荐5星,触发思考,个人看过之后感觉更迷茫了']
print(Book)
Book['英国']['月亮与六便士'][1] = ['文学小说','推荐5星,触发思考,可是个人看过之后感觉更迷茫了']
print(Book)
# 删除:pop是标准删除法,del是另一种删除法
# del Book['英国']['月亮与六便士'][1]
Book['英国']['月亮与六便士'].pop(1)
print(Book)
其他用法
# 打印字典内所有的值(value)
print( Book.values() )
# 打印字典内所有的索引(key)
print( Book.keys() )
# 在Book字典中找key”英国“,如果已存在,返回已存在的值;如果不存在,就创建一个。
Book.setdefault('英国',{'人性的枷锁':'经典,毛姆作品'})
print(Book)
# update:把两个字典合并,A字典已有key,B字典里对相同key的值进行覆盖;A字典没有的key,就新增B字典的进去。
classroom1 = {'Jack':12,'Amy':11,'Jane':10}
classroom2 = {'Jack':13,'Tom':7}
classroom1.update(classroom2)
classroom2.update(classroom1)
print(classroom1) # 返回:{'Jack': 13, 'Amy': 11, 'Jane': 10, 'Tom': 7}
print(classroom2) # 返回:{'Jack': 13, 'Tom': 7, 'Amy': 11, 'Jane': 10}
# 把字典转换为列表
print( classroom2.items() ) # 返回:dict_items([('Jack', 13), ('Tom', 7), ('Amy', 11), ('Jane', 10)])
# 初始化一个新的字典,并把值赋给key。注意 :单层修改的时候可以用,多层字典慎用,因为修改某个值会把其他的值都改了。
c = dict.fromkeys([1,2,3],['test1',{'test2':444},'test3'])
print(c)
c[2][1]['test2']= 'TEST'
print(c)
字典循环
classroom = {'Jack':12,'Amy':11,'Jane':10,'Tom':7}
# 标准方式
for i in classroom:
print(i,classroom[i]) # 打印 key 和 key的值
# 另一种方式(须先将字典转换为列表,再打印,比较低效,数据多的情况不建议使用)
for k,v in classroom.items():
print(k,v)