(4) Python 内置类型 –- 字典
来源:互联网 发布:图像卷积算法介绍 编辑:程序博客网 时间:2024/06/05 02:06
概 述:Python字典 –- 字典。字典是一种通过名字来引用值的结构,是Python中唯一内建的映射数据类型。字典是由一组组键值对组成的。键可以是数字,字符串甚至是元组;值是Python中的各种有效的数据类型。当索引不满足于我们的需求时,可以使用字典。
1 字典的创建
1.1快捷方式创建字典
1
2
3
4
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> phonebook
{'Beth': '9102', 'Alice': '2341', 'Ceil': '3258'}
1.2 dic函数
1
2
3
4
5
6
7
>>> items = [('name','Gumby'),('age',42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
>>> d = dict(name='Gumby',age=42)
>>> d
{'age': 42, 'name': 'Gumby'}
2 基本字典操作
2.1 返回键值对的数量
1
2
3
4
5
>>> d = dict(name='Gumby',age=42)
>>> d
{'age': 42, 'name': 'Gumby'}
>>> len(d)
2
2.2 返回关联到键上的值
1
2
3
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> phonebook['Beth']
'9102'
2.3 将值关联到键上
1
2
3
4
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> phonebook['Beth'] = "5211314"
>>> phonebook
{'Beth': '5211314', 'Alice': '2341', 'Ceil': '3258'}
2.4 删除键值对
1
2
3
4
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> del phonebook['Beth']
>>> phonebook
{'Alice': '2341', 'Ceil': '3258'}
2.5 检查成员资格
1
2
3
4
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> 'Alice' in phonebook
True
>>>
说明:
- 字典中的键可以是任意的不可变类型。
- 即使键不存在,也可以为它赋值,这样字典就会建立新的项。
- 成员资格查找的是键,而不是值。
1
2
3
4
>>> x= {}
>>> x[42] = "Hinata"
>>> x
{42: 'Hinata'}
2.6 字典的格式化字符串
在每一个转换说明符中的%字符后面,可以加上键,后面再跟上其他的元素说明。
1
2
3
>>> phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
>>> "Alice's phone number is %(Alice)s" % phonebook
"Alice's phone number is 2341"
3 字典方法
3.1 clear
函数功能:清除字典中的所有的项。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> name = {}
>>> name
{}
>>> name['name'] = 'Hinata'
>>> name['age'] = 16
>>> name
{'age': 16, 'name': 'Hinata'}
>>> return_value = name.clear()
>>> return_value
>>> name
{}
>>> print return_value
None
>>>
3.2 copy
函数功能:返回一个具有相同键-值对的新字典,这个方法实现的是潜复制。
1
2
3
4
5
6
7
8
9
10
11
12
>>> person = {'name':'Hinata','machine':['foo','bar','baz']}
>>> person_cp = person.copy()
>>> person_cp['name'] = 'XLX'
>>> person
{'machine': ['foo', 'bar', 'baz'], 'name': 'Hinata'}
>>> person_cp
{'machine': ['foo', 'bar', 'baz'], 'name': 'XLX'}
>>> person_cp['machine'].remove('foo')
>>> person
{'machine': ['bar', 'baz'], 'name': 'Hinata'}
>>> person_cp
{'machine': ['bar', 'baz'], 'name': 'XLX'}
从上述代码可以看出,copy()函数只是复制了字典中值的引用,所以在修改person_cp中的列表中的时候,person随之改变。为避免这个问题,可以使用深复制。代码如下:
1
2
3
4
5
6
7
8
>>> from copy import deepcopy
>>> person = {'name':'Hinata','machine':['foo','bar','baz']}
>>> person_cp = deepcopy(person)
>>> person_cp['machine'].remove('foo')
>>> person
{'machine': ['foo', 'bar', 'baz'], 'name': 'Hinata'}
>>> person_cp
{'machine': ['bar', 'baz'], 'name': 'Hinata'}
3.3 fromkeys
函数功能:使用给定的键创建字典,每个键对应一个默认的值None。
1
2
3
4
5
6
>>> person = dict.fromkeys(['name','age'])
>>> person
{'age': None, 'name': None}
>>> person = {}.fromkeys(['name','age','machine'])
>>> person
{'machine': None, 'age': None, 'name': None}
3.4 get
函数功能:访问字典项。当get访问一个不存在的键时,得到None值。
1
2
3
4
5
6
7
8
9
10
11
12
>>> person = {}
>>> print person['name']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print person.get('name')
None
>>> print person.get('name','自己设置默认值')
自己设置默认值
>>> person['name'] = 'Hinata'
>>> print person.get('name','自己设置默认值')
Hinata
3.5 has_key
函数功能:检查字典中是否含有特定的键,相当于检查成员资格。
1
2
3
4
5
6
>>> person = {}
>>> person.has_key('name')
False
>>> person['name'] = 'hinata'
>>> person.has_key('name')
True
3.6 items和iteritems
函数功能:
items: 将字典中的所有项以列表的方式返回。
iteritems: 将字典中的所有项以迭代器的方式返回
1
2
3
4
5
6
7
>>> person = {'name':'Hinata','age':16}
>>> person.items()
[('age', 16), ('name', 'Hinata')]
>>> person.iteritems()
<dictionary-itemiterator object at 0x7f44131e0d08>
>>> list(person.iteritems())
[('age', 16), ('name', 'Hinata')]
3.7 keys和iterkeys
函数功能:
keys: 将字典中的所有键以列表的方式返回。
iterkeys: 将字典中的所有键以迭代器的方式返回
1
2
3
4
5
6
7
>>> person = {'name':'Hinata','age':16}
>>> person.keys()
['age', 'name']
>>> person.iterkeys()
<dictionary-keyiterator object at 0x7f44131e0d08>
>>> list(person.iterkeys())
['age', 'name']
3.8 pop
函数功能:pop返回对应于给定键的值,然后移除该键值对
1
2
3
4
5
>>> person = {'name':'Hinata','age':16}
>>> person.pop('age')
16
>>> person
{'name': 'Hinata'}
3.9 popitem
函数功能:弹出一个随机的键值对
1
2
3
4
5
>>> person = {'name':'Hinata','age':16}
>>> person.popitem()
('age', 16)
>>> person
{'name': 'Hinata'}
3.10 setdefault
函数功能:当键存在,则返回相应的值。当键不存在,则返回默认值并且相应地更新字典。
1
2
3
4
5
6
7
8
9
10
>>> person = {'name':'Hinata','age':16}
>>> person.setdefault('name')
'Hinata'
>>> person.setdefault('phone','5201314')
'5201314'
>>> person
{'phone': '5201314', 'age': 16, 'name': 'Hinata'}
>>> person.setdefault('lover')
>>> person
{'phone': '5201314', 'age': 16, 'name': 'Hinata', 'lover': None}
3.10 update
函数功能:利用一个字典更新另一个字典。提供的字典中的项会被添加到旧字典中,若有相同的键则会进行覆盖。
1
2
3
4
5
6
>>> person = {'name':'Hinata','age':16}
>>> person2 = {'name':'XLX','like':'cat'}
>>> person.update(person2)
>>> person
{'age': 16, 'name': 'XLX', 'like': 'cat'}
>>>
3.11 values 和 itervalues
函数功能:
values: 以列表的形式返回字典中的值
itervalues: 以迭代器的形式返回字典中的值
返回的列表中可以有相同的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> d = {}
>>> d[1] = 5
>>> d[2] = 2
>>> d[3] = 0
>>> d[4] = 1
>>> d[5] = 3
>>> d[6] = 1
>>> d[7] = 4
>>> d.values()
[5, 2, 0, 1, 3, 1, 4]
>>> d.itervalues()
<dictionary-valueiterator object at 0x7f44131e0d08>
>>> list(d.itervalues())
[5, 2, 0, 1, 3, 1, 4]
- (4) Python 内置类型 –- 字典
- Python---字典内置方法
- python内置容器之字典
- (1) Python 内置类型 –- 字符串
- (2) Python 内置类型 –- 列表
- (3) Python 内置类型 –- 元组
- python内置类型
- python内置对象类型
- Python扩展内置类型
- Python 内置类型简述
- python内置类型
- python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
- 映射类型 字典 (python)
- Python字典类型
- Python映射类型:字典
- Python 05:Python字典类型
- python基础知识——内置数据结构(字典)
- Python字典内置函数和方法
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org.hibernate.LazyInit
- Immutable 详解及 React 中实践
- hrbust 2024/hdu2899 Strange fuction【三分】
- HTMl5的sessionStorage和localStorage
- 探秘Java中String、StringBuilder以及StringBuffer
- (4) Python 内置类型 –- 字典
- 构建高并发高可用的电商平台架构实践
- 初步了解ReactJS
- osgi实例讲解
- Android使用UncaughtExceptionHandler捕获全局异常
- Spring定时任务的实现
- 电书类
- 查看mysql数据库的版本方法
- Seletor()