关于字典dict“相加减”以及KeyError处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于字典dict“相加减”以及KeyError处理相关的知识,希望对你有一定的参考价值。

参考技术A

运用 Counter() 函数可以实现相同键字典相加减,实际是合并操作

字典进行相减操作时,相同键值又相同,会去重消失

此时在未知情时调用 z[\'A\'] 会触发错误 KeyError:\'A\'

常用两种:

用到 defaultdict ,它是内置类 dict 的子类
构造器第一个参数是一种数据类型(int,list)或者是None 代表着值的数据类型
设置了非 None 参数,代表生成的字典以该种数据类型存值,也就有了初始值
如:
int 类型初始值为 0
list 类型初始值为 []

用到 dict 内置的 get(key,default) 函数

解决字典dict中key不存在的情况

如果字典中key不存在,程序会报错‘KeyError‘,如下:

def test_no_key(self):
    a_dict = {}
    print(a_dict[a_key])
Error
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
    yield
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py", line 605, in run
    testMethod()
  File "/Users/wmj/PycharmProjects/fluent/test/test_dict.py", line 30, in test_no_key
    print(a_dict[a_key])
KeyError: a_key

采用dict.get()的方式,如果key不存在,怎会返回None

a_dict = {}
    result = a_dict.get(a_key)
    print(type(result))

并且可以自定义默认值,比如如果返回‘nothing‘

a_dict = {}
    print(a_dict.get(a_key, nothing))

 

以上是关于关于字典dict“相加减”以及KeyError处理的主要内容,如果未能解决你的问题,请参考以下文章

解决字典dict中key不存在的情况

我的代码中的 keyerror 1

Python基础知识:字典dict

使用字典理解时如何避免丢失键的错误

C语言关于利用sscanf实现字符串相加减

js 中处理时间相加减问题