字典(dict)

        字典是Python中比较特别的一类数据类型,字典中的每个成员是以“键(key):值(value)”对的形式存在的。

        字典以大括号“{}”包围的以“键:值”对方式声明和存在的结构数据。与列表最大的不同在于字典是无序的,其成员位置只有象征性,在字典中通过键来访问成员,而不通过其位置来访问该成员。

1、字典键的特性

        字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

>>> adct = {'name':'kuenen','age':24, 'name':'tom'}
>>> adct
{'name': 'tom', 'age': 24}
>>> adct['name']
'tom'

2)键必须不可变类型,如数字、字符串、包含不可变对象的元组。

>>> bdct = {('name','age'):('kuenen',25)}
>>> bdct
{('name', 'age'): ('kuenen', 25)}
>>> cdct = {(['name','age']):(['kuenen',25])}
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    cdct = {(['name','age']):(['kuenen',25])}
TypeError: unhashable type: 'list'

2、字典的基本操作

(1)创建字典

创建空字典

>>> {}
{}
>>> dict()
{}
>>> adct = {'a':1,'b':2,'c':3}
>>> adct
{'c': 3, 'a': 1, 'b': 2}

(2)访问字典的值

>>> bdct = {'name':'kuenen','age':25}
>>> bdct['name']
'kuenen'

(3)修改字典的值

>>> bdct
{'name': 'kuenen', 'age': 25}
>>> bdct['age']= 27
>>> bdct
{'name': 'kuenen', 'age': 27}

(4)添加键值对

>>> bdct
{'name': 'kuenen', 'age': 27}
>>> bdct['sex'] = 'man'
>>> bdct
{'name': 'kuenen', 'age': 27, 'sex': 'man'}

(5)删除字典

>>> bdct
{'name': 'kuenen', 'age': 27, 'sex': 'man'}
>>> del bdct['age']    # 删除键是'age'的item
>>> bdct
{'name': 'kuenen', 'sex': 'man'}
>>> bdct.clear()    # 清空字典所有条目
>>> bdct
{}
>>> del bdct    # 删除字典
>>> bdct
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    bdct
NameError: name 'bdct' is not defined

3、字典内置方法

dict.clear()

删除字典内所有元素

dict.copy()

返回一个字典的浅复制

dict.fromkeys(seq,value)

创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值,默认为None

dict.get(key, default=None)

返回指定键的值,如果值不在字典中返回default值

dict.items()

以列表返回可遍历的(键, 值) 元组数组

dict.keys()

以列表返回一个字典所有的键

dict.pop(key)

删除k:v键值对

dict.popitem()

从字典中删除任一k:v键值对,并返回它

dict.setdefault(key, default=None)

和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default

dict.update(dict2)

把字典dict2的键/值对更新到dict里

dict.values()

以列表返回字典中的所有值

示例代码:

>>> adct = {'name': 'kuenen', 'age': 25}
>>> bdct = adct.copy()
>>> bdct
{'name': 'kuenen', 'age': 25}
>>> cdct = dict.fromkeys('python')
>>> cdct
{'o': None, 't': None, 'y': None, 'n': None, 'p': None, 'h': None}
>>> ddct = dict.fromkeys(['python','java'],10)
>>> ddct
{'python': 10, 'java': 10}
>>> adct
{'name': 'kuenen', 'age': 25}
>>> adct.get('name')
'kuenen'
>>> adct.get('class')
>>> adct.get('class','None')
'None'
>>> adct.items()
dict_items([('name', 'kuenen'), ('age', 25)])
>>> for i in adct.items():
print(i)
 
('name', 'kuenen')
('age', 25)
{'name': 'kuenen', 'age': 25}
>>> adct.pop('name')
'kuenen'
>>> adct
{'age': 25}
>>> bdct
{'name': 'kuenen', 'age': 25}
>>> bdct.popitem()
('name', 'kuenen')
>>> bdct
{'age': 25}
>>> adct
{'age': 25}
>>> adct.setdefault('name')
>>> adct
{'name': None, 'age': 25}
>>> adct.setdefault('age')
25
>>> adct.setdefault('sex','man')
'man'
>>> adct
{'name': None, 'age': 25, 'sex': 'man'}
>>> bdct = {'a':1}
>>> adct.update(bdct)
>>> adct
{'a': 1, 'name': None, 'age': 25, 'sex': 'man'}
>>> adct.values()
dict_values([1, None, 25, 'man'])

4、字典遍历

(1)遍历字典的key

>>> adct
{'a': 1, 'name': None, 'age': 25, 'sex': 'man'}
>>> for key in adct.keys():
print(key)
 
a
name
age
sex

(2)遍历字典的value

>>> for value in adct.values():print(value)

1
None
25
man

(3)遍历字典的item

>>> for item in adct.items():print(item)

('a', 1)
('name', None)
('age', 25)
('sex', 'man')

(4)遍历字典的key-value

>>> for key,value in adct.items():
print(key,value)
 
a 1
name None
age 25
sex man

参考文档:

<http://www.runoob.com/python/python-dictionary.html

原文地址:https://www.cnblogs.com/kuenen/p/5984946.html