dict对象的成员函数

2020年5月8日 / 18次阅读 / Last Modified 2020年5月10日

这篇文章给自己总结一下dict对象的成员函数,配合示例代码。

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> dir(d)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

clear

清空整个dict对象,即清除所有数据项。

>>> help(d2.clear)
Help on built-in function clear:

clear(...) method of builtins.dict instance
    D.clear() -> None.  Remove all items from D.

>>> d2
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d2.clear()
>>> d2
{}

copy

浅拷贝。(关于深copy

>>> dd = {'a':[1,2,3],'b':[4,5,6]}
>>> dd
{'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> dd2 = dd.copy()
>>> dd2['a'][0] = 999
>>> dd
{'a': [999, 2, 3], 'b': [4, 5, 6]}

fromkeys

这应该是一个classmethod方法,用来通过一个iterable对象创建dict对象:

>>> keys
[1, 2, 3, 4, 5, 6, 7, 8]
>>> dict.fromkeys(keys)
{1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None}
>>> dict.fromkeys(keys, '123')
{1: '123', 2: '123', 3: '123', 4: '123', 5: '123', 6: '123', 7: '123', 8: '123'}

get

通过key值获取value,如果key值不存在,默认返回None,也可以指定一个不存在时的默认返回值:

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.get('a')
1
>>> d.get('d')
4
>>> d.get('f')
>>> d.get('f', 999)
999

如果不使用get函数,而是直接引用一个不存在的key值,可能会出现KeyError:

>>> d['f']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'f'

items

此函数返回一个set-like对象,这种set-like对象,可能在某些集合(set)运算的时候会比较方便。而我们一般使用此函数来方便的遍历dict对象的数据,下面给出几种遍历方式对比:

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> for it in d:
...     print(it)
...
a
c
e
b
d
>>> for it in d:
...     print(it, d[it])
...
a 1
c 3
e 5
b 2
d 4
>>> for k,v in d.items():
...     print(k,v)
...
a 1
c 3
e 5
b 2
d 4

keys

返回一个set-like对象,仅包含key值:

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.keys()
dict_keys(['a', 'c', 'e', 'b', 'd'])
>>> list(d)
['a', 'c', 'e', 'b', 'd']
>>> tuple(d)
('a', 'c', 'e', 'b', 'd')
>>> set(d)
{'c', 'b', 'a', 'd', 'e'}

pop

返回key指定的item的value,并删除此item,可以指定key不存在时返回的默认值,如果不指定,key不存在时会抛出KeyError异常:

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>>
>>>
>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.pop('a')
1
>>> d
{'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.pop('a', 99)
99
>>> d
{'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.pop('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'

popitem

按照插入相反的顺序弹出item,即key:value pair,并删除时item,如果dict为空,会有KeyError异常抛出:

>>> d = {}
>>> d['a'] = 1
>>> d['c'] = 3
>>> d['e'] = 5
>>> d['b'] = 2
>>> d['d'] = 4
>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>> d.popitem()
('d', 4)
>>> d.popitem()
('b', 2)
>>> d.popitem()
('e', 5)
>>> d.popitem()
('c', 3)
>>> d.popitem()
('a', 1)
>>> d.popitem()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'

可以使用popitem函数来遍历dict对象中的数据。

setdefault

此函数用来向dict对象中插入数据,如果key不存在,value就由函数default参数指定,并返回default,如果key存在,原key对应的value不变,返回原key值对应的value:

>>> help(d.setdefault)
Help on built-in function setdefault:

setdefault(key, default=None, /) method of builtins.dict instance
    Insert key with a value of default if key is not in the dictionary.

    Return the value for key if key is in the dictionary, else default.

>>>
>>> d
{}
>>> d.setdefault('a',1)
1
>>> d.setdefault('a',2)
1
>>> d
{'a': 1}

update

这个函数的解释看着有些复杂,它的功能就是update key对应的value,不过不是一个个的更新,而是一批批的更新:

>>> help(d.update)
Help on built-in function update:

update(...) method of builtins.dict instance
    D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
    If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
    If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v
    In either case, this is followed by: for k in F:  D[k] = F[k]

>>>
>>>
>>> a = {'a':1, 'b':2, 'c':3}
>>> b = {'a':'1', 'b':'2'}
>>> a.update(b)
>>> a
{'a': '1', 'b': '2', 'c': 3}
>>>
>>> a.update(a=11, c=33)
>>> a
{'a': 11, 'b': '2', 'c': 33}

values

此函数与keys,items对应,都是提供了一个view,用来查看所有的value:

>>> d
{'a': 1, 'c': 3, 'e': 5, 'b': 2, 'd': 4}
>>>
>>> for v in d.values():
...     print(v)
...
1
3
5
2
4

以上就是所有dict对象的成员函数总结。(list对象成员函数总结

-- EOF --

本文链接:https://www.pynote.net/archives/1884

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top