day 05 字典dic(增删改查 嵌套)

字典的初识:

why:

列表可以存储大量的数据,数据之间的关联性不强

['太白', 18, '男', '大壮', 3, '男']

列表的查询速度比较慢。

what:容器型数据类型:dict。

how:

数据类型的分类(可变与不可变):

可变(不可哈希)的数据类型:list dict set

不可变(可哈希)的数据类型: str bool int tuple

字典:{}括起来,以键值对形式存储的容器型数据类型:

dic = {'太白': {'name': '太白金星','age': 18, 'sex': '男'}, 'python22期': ['朱光亚', '大壮', '雪飞', '岑哥'], }

键必须是不可变的数据类型:int , str (bool tuple几乎不用) 唯一的。

  • 值可以是任意数据类型,对象。

  • 字典3.5x版本之前(包括3.5)是无序的。

  • 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的。

  • 字典3.7x以后都是有序的。

  • 字典的优点:查询速度非常快,存储关联性的数据。

  • 字典的缺点:以空间换时间。

字典的创建方式:

  • # 面试会考
    # 方式一:
    # dic = dict((('one', 1), ('two', 2), ('three', 3)))
    # print(dic) # {'one': 1, 'two': 2, 'three': 3}

    # 方式二:
    # dic = dict(one=1, two=2, three=3)
    # print(dic)

    # 方式三:
    # dic = dict({'one': 1, 'two': 2, 'three': 3})
    # print(dic)

验证字典的合法性:

dic = {[1,2,3]: 'alex', 1: 666}  # 键要不可变的数据类型
print(dic)
dic = {1: 'alex', 1: '太白', 2: 'wusir'}  # 键要唯一
print(dic)

fromkeys()

dic=dict.fromkeys('abc',[])
print(dic)#{'a': [], 'b': [], 'c': []}

 

字典的增删改查

dic = {'name': '太白', 'age': 18, 'hobby_list': ['直男', '钢管', '开车']}
# 直接增加 有则改之,无则增加   # 增:# 增:# 增:# 增:
# dic['age'] = 23  
# dic.setdefault('age', 45)#塞的第副的 有则不变,无则增加
## ret = dic.pop('hobby','没有此键') #按照键删除键值对 有返回值设置第二个参数则无论字典中有无此键都不会报错
# dic.clear() ## clear 普利饿 清空 **
# # del dic['age'] # del **
# dic['name'] = 'alex' # 改# 改# 改# 改# 改
# print(dic)
# print(dic['hobby_list'])# 查# 查# 查# 查# 查# 查# 查
# l1 = dic.get('hobby_list1','没有此键sb')  
# print(l1) # 可以设置返回值
# print(dic.keys(),type(dic.keys()))
# print(list(dic.keys()))# 可以转化成列表
# for key in dic.keys():
#     print(key)#循环输出建
# values()
# print(dic.values())
# print(list(dic.values()))##转为列表
# for value in dic.values():
#     print(value)#循环输出值
# print(dic.items()) #请循环输出所有的key和value
# for key,value in dic.items():
#     print(key,value) ###重要
# a,b = ('name', '太白')
# print(a,b)
# 面试题
# a = 18   #拆包
# b = 12
# a,b = b,a
# # a,b = 12,18
# print(a,b)

 

相关练习题:

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
# 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
# 请在k3对应的值中追加一个元素 44,输出修改后的字典
# print(dic['k3'])
# l1 = dic.get('k3')
# print(l1)
# dic.get('k3').append(44)
# print(dic)
# 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
  • 字典的嵌套

    dic = {
       'name': '汪峰',
       'age': 48,
       'wife': [{'name': '国际章', 'age': 38},],
       'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'}
    }

    # 1. 获取汪峰的名字。
    #
    # 2.获取这个字典:{'name':'国际章','age':38}。
    #
    # 3. 获取汪峰妻子的名字。

    # 4. 获取汪峰的第三个孩子名字。

     

  •  

转载于:https://www.cnblogs.com/saoqiang/p/10908357.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值