Python3 字典学习记录

创建字典的几种方法

  • 方式一

    dic = dict(((1, 'a'), (2, 'b')))
    print(dic)
    
  • 方式二

    dic = dict(a=1, b=2)
    print(dic)
    
  • 方式三

    dic = dict({'a':1, 'b':2})
    print(dic)
    

验证字典的合法性

  • 列表是不可哈希,键是不可变数据类型

    dic = {[1,2,3]: 'a', 1: 777} 
    print(dic)
    
  • 键必须唯一

    dic = {1:'alex', 1:'太白', 2: '哈哈'} # 此处键有重复
    
  • 举例总结

    dic = {'name': '太白', 'age': 18}
    # 键值对:
        # 酒店:
        # 键:房间号,0~99 (必须是不可变的数据类型,且唯一的)
        # 值: 房间:里边放什么数据都可以。
    

字典的增删改查

    • 直接增加,有则改之,无则增加

      dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
      dic['sex'] = '男' # 增
      dic['age'] = 23  # 改
      print(dic)
      
    • setdefault:有则不变,无则增加

      dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
      dic.setdefault('age', 45) # 不会覆盖
      dic.setdefault('hobby', '遛弯') # 追加
      dic.setdefault('hh') # 键hh的值为None
      print(dic)
      
    • pop:按照键删除键值对,有返回值;设置第二个参数则无论字典中有无此键都不会报错。

      dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
      dic.pop('age')
      ret1 = dic.pop('age')
      ret2 = dic.pop('hobby', '没有此键')
      print(ret1)
      print(ret2)
      print(dic)
      
    • clear:清空

      dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
      dic.clear()
      print(dic)
      
    • del

      dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
      del dic['age1']
      print(dic)
      
  • dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
    dic['name'] = 'alex'
    print(dic)
    
  • dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
    print(dic['hobby_list'])
    print(dic['hobby_list1']) # 没有此键会报错
    
    # get  ***
    l1 = dic.get('hobby_list')
    l2 = dic.get('hobby_list1', '没有此键sb') # 可以设置返回值
    print(l1)
    print(l2)
    

三个特殊的

  • keys()

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
    print(dic.keys())
    # 可以转化成列表
    print(list(dic.keys()))
    for key in dic.keys():
        print(key)
    
    for key in dic:
        print(key)
    
  • values()

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
    print(dic.values())
    print(list(dic.values()))
    for value in dic.values():
        print(value)
    
  • items()

    dic = {'name': '太白', 'age': 18, 'hobby_list': ['足球', '羽毛球']}
    print(dic.items())
    
    # 普通变量,item是元组
    for item in dic.items():
        print(item)
        
    # 元组拆包
    a, b = ('name', '太白')
    print(a, b)
    
    # 元组拆分写法
    for key, value in dic.items():
        print(key, value)
    

    面试题:一行代码完成a和b值互换

    a = 18
    b = 12
    a,b = b,a
    print(a, b)
    

练习

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

# 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic.setdefault('k4', 'v4')
print(dic)

# 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
dic['k1'] = 'alex'
print(dic)

# 请在k3对应的值中追加一个元素 44,输出修改后的字典
dic.get('k3').append(44)
print(dic)

# 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic.get('k3').insert(0, 18)
print(dic)

字典的嵌套

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

# 1. 获取汪峰的名字。
print(dic['name'])
print(dic.get('name'))

# 2.获取这个字典:{'name':'国际章','age':38}。
print(dic.get('wife')[0])

# 3. 获取汪峰妻子的名字。
print(dic.get('wife')[0].get('name'))

# 4. 获取汪峰的第三个孩子名字。
print(dic.get('children').get('girl_three'))

总结

  • 字典:查询速度快,数据的关联性强。
    • 键不可变数据类型(str、int、tuple、bool),唯一。
    • 值:任意数据类型,对象。
    • 增删改查(全部都要会默写)***
    • 字典的嵌套。***
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值