python学习之路---字典的增删改查,对应赋值,以及字典的嵌套

# dict
# 数据类型划分:可变数据类型、不可变数据类型
# 不可变数据类型:int\str\元祖\bool    可哈希数据类型
# 可变数据类型:list\集合set\dict   不可哈希数据类型

# dict表达式: dict{key:value}  key 只能能是不可变数据类型。value 可以是任意数据类型。
# dict 优点: 二分查找(每次查询只查询一般:如猜数字:1-100  如何猜到55)
#             储存大量的关系型数据类型
#      特点:无序的,所以无索引,只能通过键或值查找 3.6版本之后字典改为有序的了


# dict 的 增删改查

# 增 setdefault 增加一个key,可以赋值也可以默认为空,规则:若已经有key,则不覆盖原来Key所对应的值,若无KEY则新增。
# dic1 = {'name':'jerry', 'age': 28, 'height':177, }
# dic1['weight'] = 75
# dic1['name'] = 'tom' # 直接给原有的key赋值
# print(dic1)
# dic1.setdefault('hobby')
# dic1.setdefault('name','jim') # 已经有key,所以原来的Key值不变
# print(dic1)

# 删 pop 删除指定的key,有返回值(返回值是value),clear(清空字典),del(可以删除key,也可以直接删除字典)
# dic1 = {'name':'jerry', 'age': 28, 'height':177, }
# dic1.pop('name') # 删除key=name
# v1 = dic1.pop('age')   # 删除 key=age,并取出返回值
# # v2 = dic1.pop('name') # 因为已经删除了key=name,所以程序报错,如果想避免报错可以添加None或者任意字符串
# V3 = dic1.pop('name', None)
# v4 = dic1.pop('name', '没有这个键')
# print(dic1)
# print(v1)
# print(V3)
# print(v4)
#
# dic1.clear() # 清空字典
# print(dic1)
#
# dic1.setdefault('name', 'jerry') # 新增一个键值对 key=name value = jerry
# print(dic1)
# del dic1['name']  # 删除 key=name
# print(dic1)
# del dic1['name']  # 删除 key = name ,因为 已经删除过了或者key写错,所以会报错,建议都是pop
# print(dic1)
# del dic1 # 删除字典 打印报错,因为字典已经不存在了
# print(dic1)

# 改 update 语法 字典A = update(字典B) 解释:将字典B的内容更新到字典A,如果有相同的Key则覆盖,若无则新增
# dic1 = {'name':'jerry', 'age': 28, 'height':177, }
# dic2 = {'name': 'tom', 'weight': 70}
# dic2.update(dic1)
# print(dic1)
# print(dic2)
#
# dic2['name'] = 'jim' # 直接修改key对应的value
# print(dic2)

# 查 可以用for循环,也可以用get方法,避免在查不到对用key的时候产生报错,用法和pop类似
# dic1 = {'name': 'jerry', 'age': 28, 'height': 177, }
# print(dic1.keys(), type(dic1.keys()))  # 输出字典的key # 虽然是特殊类型,但是依旧当做是一个列表
# print(dic1.values())   # 输出字典的value # 虽然是特殊类型,但是依旧当做是一个列表
# print(dic1.items())  # 输出字典的key和value # 虽然是特殊类型,但是依旧当做是一个列表,列表里包含了元组,元组里的是key和value
#
# # for 循环查询
# for i in dic1:  # 默认循环打印的是key
#     print(i)
# for i in dic1.keys():  # 等同于默认的设置
#     print(i)
# for i in dic1.values():  # 打印value
#     print(i)
#
# # 对应赋值,可以直接添加int\str\list\元组\字典 但是必须是一一对应的,若不对应则报错 如a,b = [1],[2],[3]会报错
# a, b = 1, 2
# print(a, b)
# a, b, c = 1, 2, 3
# print(a, b, c)
# # 面试题: 需求 一行代码 让 a ,b 值互换
# a = 1
# b = 2
# print(a, b)
# # 解决方式
# a, b = b, a
# print(a,b)
#
# # 需求:循环打印出键和值,且输出的值去掉括号。
# for i in dic1.items():
#     print(i)
#
# # 解决方式:将i 改为两个变量 分别赋值 key = k value = v
# for k, v in dic1.items():
#     print(k, v)
#
# # get 方法查询, 常用于查询某系key是否在字典内。
# d1 = dic1.get('name')  # 查询获得key对应的value
# print(d1)
# d1 = dic1.get('name1')  # 查询key 若不在字典返回None
# print(d1)
# d1 = dic1.get('name1', '没有这个键')  # 查询key,若不在字典 返回自定义的字符串
# print(d1)


# 字典的嵌套 规则,先找到key的位置,然后增加或删除或修改
# dic = {
#     'name':['alex','wusir','taibai'],
#     'py9':{
#         'time':'1213',
#         'learn_money':19800,
#         'addr':'CBD',
#            },
#     'age':21
# }
# 
# dic['name'][1] = dic['name'][1].upper()  # 将wusir变为全大写
# print(dic['name'])
# dic['py9'].setdefault('name','jerry')  # 给py9字典,添加一个新的键值对
# print(dic)].setdefault('name','jerry')  # 给py9字典,添加一个新的键值对
print(dic)

猜你喜欢

转载自blog.csdn.net/chengyinman0078/article/details/84722425
今日推荐