python中字典的一些tips

时间:2020-12-22 19:05:40

环境:python shell 3.5.1

首先是关于字典可不可以清空直接赋空字典:

>>> mydict1 ={1:'hello',2:'ohayo',3:'bonjour'}
>>> mydict2 = mydict1
>>> mydict1 = {}
>>> mydict2
{1: 'hello', 2: 'ohayo', 3: 'bonjour'}

可见,就算 dict1 赋空字典了,还是会留下 dict2 非空。

为了避免这样,可以这样:

>>> mydict1 ={1:'hello',2:'ohayo',3:'bonjour'}
>>> mydict2 = mydict1
>>> mydict1.clear()
>>> mydict1
{}
>>> mydict2
{}
这里涉及的知识,跟c++的浅拷贝深拷贝类似


然后是关于字典的 get()和setdefault(),刚开始看的时候总混淆。

talk is cheap show me the code:

>>> mydict1 ={1:'hello',2:'ohayo'}
>>> mydict1.get(1)
'hello'
>>> mydict1.get(3)
>>> mydict1.get(3,'None')
'None'
显而易见,get(),第一个参数是key值,如果字典有对应key,就会返回key对应的value。但是没有对应key时,返回get()的第二个参数。

如果get()没有给出第二个参数,则会返回一个‘NoneType’类型。

接下来是setdefault():

>>> mydict1 ={1:'hello',2:'ohayo'}
>>> mydict1.setdefault(3)
>>> mydict1
{1: 'hello', 2: 'ohayo', 3: None}
setdefault()第一个参数是要插入的key,第二个参数是value值,如果没有第二个参数,就默认为None。
>>> mydict1.setdefault(3,'bonjour')
>>> mydict1
{1: 'hello', 2: 'ohayo', 3: None}

但是一定要注意,如果第一个参数的item已经存在,则第二个参数没用的。


PS:一些字典相关的函数

创建字典相关:dict(), formkeys()

删除字典相关:del mydict1['name'], mydict1.clear(), mydict1.pop('name'), del mydict1, mydict1.popitem()