python 字典的get()pop()方法的区别

get()方法

  • 返回指定键 key 的值,如果值不在字典中返回默认值。
  • 语法:dict.get(key, default=None)
    • 参数:
      • key – 字典中要查找的键
      • default – 如果指定键的值不存在时,返回该默认值值
  • 实例:
    • key存在,则返回key对应的值

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.get('name', 'judy')
      'summer'
      
    • key不存在,返回默认值

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.get('new_name', 'judy')
      'judy'
      
    • key不存在,也没有给默认值

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.get('new_name')
      # 这里是空的,什么也没有
      
  • 使用场景:
    • 从字典取出指定健的值

pop()方法

  • 删除字典给定键 key 所对应的值,返回值为被删除的值,如果要删除的 key 不存在,则需要添加默认值,否则会报错。

  • 语法:pop(key[, default])

    • 参数:
      • key – 字典中要查找的键
      • default – 如果指定键的值不存在时,返回该默认值值
  • 实例:

    • 删除指定key

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.pop('name')
      'summer'
      >>> t
      {'age': 23}
      
    • key不存在,返回默认值

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.pop('new_nmae', 'judy')
      'judy'
      >>> t
      {'name': 'summer', 'age': 23}
      
    • key不存在,没有默认值

      >>> t = {'name': 'summer', 'age': 23}
      >>> t.pop('new_nmae')
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      KeyError: 'new_nmae'
      
  • 使用场景:

    • 当这个键程序后面不在使用,明确删除后不会影响其它业务,可以使用pop(),但一定要给默认值,否则当key不存在的时候,程序会报错
  • 注意:

    • 一般应该避免使用这个函数,避免有地方在使用这个值,对程序造成影响

如何在循环dict()中执行pop操作

  • 如,想把 d = {‘a’:1, ‘b’:2, ‘c’:3} 中不满足条件的元素给删除
  • 事列1:是错误❌的做法
    • 会报这个错误:RuntimeError: dictionary changed size during iteration
    	d = {'a':1, 'b':2, 'c':3} 
    	for k, v in d.items():
            if v < 2:
                d.pop(k)
    
  • 事列2:处理是对的✅
    	d = {'a':1, 'b':2, 'c':3} 
    	for k in list(d.keys()):
    		v = d[k]
            if v < 2:
                d.pop(k) 或者 del d[k]
    
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值