通过名称来访问各个值得数据结构,这种数据结构称为字典。字典是Python中唯一得内置映射类型。

函数dict

可使用函数dict从其他映射(如其他字典)或键-值对序列创建字典。

>>> items=[('name','bob'),('age','26')]
>>> d=dict(items)
>>> d
'name': 'bob', 'age': '26'
#使用关键字实参来调用
>>> d=dict(name='bob',age=26)
>>> d
'name': 'bob', 'age': 26

字典方法

1 clear

方法clear删除所有的字典项,这种操作就地执行的,因此什么都不返回(或者返回None)。

>>> d=
>>> d['name']='bob'
>>> d['age']=26
>>> d
'name': 'bob', 'age': 26
>>> returned_value=d.clear()
>>> d

>>> print(returned_value)
None

2 copy

方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因此值本身是原件,而非副本)。

>>> x='name':'bob','machines':['foo','bar','baz']
>>> y=x.copy()
>>> y['name']='alice'
>>> y['machines'].remove('bar')
>>> y
'name': 'alice', 'machines': ['foo', 'baz']
>>> x
'name': 'bob', 'machines': ['foo', 'baz']

可以发现替换副本中的值时,原件不受影响。但是修改副本中的值,原件也发生变化,因为原件指向的也是被修改的值。

为了避免这种问题,一种办法是执行深复制,即同时复制值及包含的所有值,等等。为此可以使用模块copy中的函数deepcopy。

>>> from copy import deepcopy
>>> d=
>>> d['machines']=['foo','bar','baz']
>>> c=d.copy()
>>> dc=deepcopy(d)
>>> d['machines'].append('mouse')
>>> c
'machines': ['foo', 'bar', 'baz', 'mouse']
>>> dc
'machines': ['foo', 'bar', 'baz']

3 fromkeys

方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

>>> dict.fromkeys(['name','age'])
'name': None, 'age': None
# 使用其他值
>>> dict.fromkeys(['name','age'],'(unknow)')
'name': '(unknow)', 'age': '(unknow)'

4 get

方法get为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误。

>>> d=
>>> print(d['name'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'
#而使用get不会这样
>>> print(d.get('name'))
None
#可以指定默认值
>>> print(d.get('name','N/A'))
N/A
#如果字典包含指定的键,get的作用将与普通字典相同
>>> d['name']='bob'
>>> d.get('name')
'bob'

5 items

方法items返回一个包含所有字典项的列表,其中每个元素都有(key,value)的形式。字典项在列表中的排列顺序不确定。

>>> d='x':1,'y':1,'z':1
>>> d.items()
dict_items([('x', 1), ('y', 1), ('z', 1)])
#返回值属于一种名为字典视图的特殊类型,可以确定其长度以及对其执行成员资格检查
>>> it=d.items()
>>> len(it)
3
>>> ('x',1) in it
True

6 keys

方法keys返回一个字典视图,其中包含指定字典中的键。

>>> d='x':1,'y':1,'z':1
>>> d.keys()
dict_keys(['x', 'y', 'z'])

7 pop

方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。

>>> d='x':'1','y':'2'
>>> d.pop('x')
'1'
>>> d
'y': '2'

8 popitem

方法popitem类似于list.pop,但list.pop弹出列表中的最后一个元素,而popitem随机弹出一个字典项。

>>> d='x':'1','y':'2'
>>> d.popitem()
('y', '2')
>>> d
'x': '1'

9 setdefault

方法setdefault有点像get,因为它也获取与指定键相关联的值,但除此之外,setdefault还在字典不包含指定的键时,在字典中添加指定的键-值对。

>>> d=
>>> d.setdefault('x',1)
1
>>> d
'x': 1
>>> d.setdefault('x',2)
1
>>> d
'x': 1
#如果没有指定,返回None
>>> d=
>>> print(d.setdefault('x'))
None
>>> d
'x': None

10 update

方法update使用一个字典中的项来更新另一个字典。

>>> d='x':1,'y':1,'z':1
>>> x='x':2
>>> d.update(x)
>>> d
'x': 2, 'y': 1, 'z': 1

11 values

方法values返回一个由字典中的值组成的字典视图。

>>> d='x':1,'y':1,'z':1
>>> d.values()
dict_values([1, 1, 1])

posted on 2024-01-13 21:03  jl1771  阅读(17)  评论(0编辑  收藏  举报