Python学习笔记-字典(dict)

什么是dict

dict 字典,存放 键值对-(key:value)

键不能重复,但是值可以重复,设计Key时尽量使用唯一且不可变的值

如果键重复,则该键值对的值以最后一个值为准

因为底层实现是哈希表,因此无下标

创建
dict1 = dict()
dict2 = {'key1':'value1','key2':'value2','key3':'value3'}
dict3 = {'key1':'value1','key1':'value2','key1':'value3'}
print(dict3)
===============================
{'key1': 'value3'}
访问

基本思路:通过 key 获取 value

  • 一般的

    如无指定被查找的键,则抛出一个异常

    dict1 = {'key1':'value1','key2':'value2'}
    print(dict1['key1'])
    print(dict1['key0'])
    ===========================
    value1
    KeyError: 'key0'
    
  • 内置的

    • .get() 根据 key 获取 value ,可以规定当 key 不存在时返回的默认值

      dict1.get( key , [ default ] )

        dict1 = {'key1':'value1','key2':'value2'}
        print(dict1.get('key1'))
        print(dict1.get('key0'))
        print(dict1.get('key0','Not Value'))
        ==============================
        value1
        None
        Not Value
      
    • .keys().values() 取出字典里的所有键或所有值

      通过强制类型转换可以将输出的内容变成列表 Eg. list(dict1.keys())

      dict1 = {'key1':'value1','key2':'value2'}
      print(dict1.keys())
      print(dict1.values())
      =============================
      dict_keys(['key1', 'key2'])
      dict_values(['value1', 'value2'])
      
    • .items() 将所有键值对放入列表,每个键值对以元组的形式作为列表的一项

      利用for循环可以取出所有key或所有value

      dict1 = {'key1':'value1','key2':'value2'}
      print(dict1.items())
      ===============================
      dict_items([('key1', 'value1'), ('key2', 'value2')])
      
      dict1 = {'key1':'value1','key2':'value2'}
      for key ,value in dict1.items():   # 通过.items()可以同时取到keys和values
          print(key,end='\t')
          print(value)
      =============================
      key1	value1
      key2	value2
      

      直接将 dict 塞入循环仅能取到 keys

      dict1 = {'key1':'value1','key2':'value2'}
      for e in dict1:    # 仅能取到keys
      	print(e)
      =============================
      key1
      key2
      
增删改查
  • 不支持 查询 ,但支持 取值

  • 增加与修改的方法为 dict[key] = value

    当无此 key 时,执行增加,当有此 key 时执行修改

    dict1 = {'key1':'value1','key2':'value2'}
    dict1['key0'] = 'value0'
    dict1['key1'] = '***'
    print(dict1)
    ===============================
    {'key1': '***', 'key2': 'value2', 'key0': 'value0'}
    
  • 删除的方法有 .pop() .popitem() .clear() del()

    • .pop() 删除指定键值对,并将被删除的键值对的值返回
    • .popitem() 随机删除一个键值对(从后向前),并将被删除的键值对以元组的形式返回
    • .clear() 清空字典,但保留内存空间
    • del() 删除指定键值对或清空字典且回收内存
    dict1 = {'key1':'value1','key2':'value2','key3':'value3','key4':'value4'}
    print(dict1.pop('key1'))  # 删除指定key1的键值对
    print(dict1)
    print(dict1.popitem())    # 从后向前随机删除一个键值对
    print(dict1)
    del dict1['key2']         # 删除指定key2的键值对
    print(dict1)
    dict1.clear()             # 清空dict1的内容
    print(dict1)
    del dict1                 # 回收dict1的内存空间
    print(dict1)
    ==============================
    value1
    {'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
    ('key4', 'value4')
    {'key2': 'value2', 'key3': 'value3'}
    {'key3': 'value3'}
    {}
    NameError: name 'dict1' is not defined
    
其他方法
  • .fromkeys() 借助 可迭代对象 来创建一个新的字典

    list1 = ['key1','key2','key3']
    dict1 = dict.fromkeys(list1,100)
    print(dict1)
    ===============================
    {'key1': 100, 'key2': 100, 'key3': 100}
    
转换
  • 字典转列表 仅能将 keys 放入列表中

    dict1 = {1:2,3:4,5:6,7:8}
    list1 = list(dict1)
    print(list1)
    ========================
    [1, 3, 5, 7]
    
  • 列表转字典 仅能将如下格式的列表转换为字典

    list1 = [(1,2),(3,4),(5,6)] 列表中套元组,且元组仅有一对元素

    list1 = [(1,2),(3,4),(5,6)]
    dict1 = dict(list1)
    print(dict1)
    =========================
    {1: 2, 3: 4, 5: 6}
    
支持的符号
  • in 检查key是否在dict中
  • is 检查地址是否相同
  • == 检查内容是否相同
不支持的符号
  • 不支持 +
  • 不支持 -
  • 不支持 *
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值