Python 字典学习笔记

字典(Dictionary)

字典(Dictionary) 是一个无序、可变和有索引的集合。在 Python 中,字典用花括号{}编写,拥有键和值。'''

单级实例操作
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)
posted @ 2022-09-30 15:04  宁晃  阅读(37)  评论(0编辑  收藏  举报