Python数据类型:字典
来源:互联网 发布:php 身份证号获取地区 编辑:程序博客网 时间:2024/05/16 10:16
字典是一种无序的映射的集合,包含一系列的“键:值”对。字典常量用花括号表示,如{'name':'John','age':25,'sex':'male'}。其中,字符串name、age和sex为键,字符串John和male以及数字25为值。
1、字典的特点
字典具有下列主要特点
- 字典的键通常采用字符串,但也可以用数字、元组等不可变的类型。
- 字典值可以是任意类型。
- 字典也可称为关联数组或散列表,它表示键映射到值。字典是无序的,他通过键来索引映射的值,而不是通过位置来索引。
- 字典属于可变映射,通过索引来修改映射的值。
- 字典长度可变,可为字典添加和删除“键:值”对。
- 字典可以任意嵌套,即键映射的值可以是一个字典。
- 字典存储的是对象的引用,而不是对象本身。
2、字典基本操作
字典基本操作包括创建字典、求长度、关系判断和索引等。
1.创建字典
可用多种方法来创建字典。例如:
>>> {} #创建空字典{}>>> dict() #创建空字典{}>>> {'name':'John','age':25,'sex':'male'} #使用字典常量{'age': 25, 'name': 'John', 'sex': 'male'}>>> {'book':{'Python program':100,'C++ 入门':99}}#使用嵌套的字典{'book': {'Python program': 100, 'C++ 入门': 99}}>>> {1:'onw',2:'two'} #用数字作为键{1: 'onw', 2: 'two'}>>> {(1,3,5):10,(2,4,6):50} #用元组作为键{(1, 3, 5): 10, (2, 4, 6): 50}>>> dict(name='John',age=25) #使用赋值格式的键值对创建字典{'age': 25, 'name': 'John'}>>> dict([('name','John'),('age',25)]) #使用包含键元组和值元组的列表创建字典{'age': 25, 'name': 'John'}>>> dict.fromkeys(['name','age']) #创建无映射值的字典,默认值为None{'age': None, 'name': None}>>> dict.fromkeys(['name','age'],0) #创建值相同的字典{'age': 0, 'name': 0}>>> dict.fromkeys('abc') #使用字符串创建无映射值字典{'b': None, 'a': None, 'c': None}>>> dict.fromkeys('abc',10) #使用字符串和映射值创建字典{'b': 10, 'a': 10, 'c': 10}>>> dict(zip(['name','age'],['John',25])) #使用zip解析键值列表创建字典{'age': 25, 'name': 'John'}>>> x={} #先创建一个空字典>>> x['name']='John' #通过赋值添加“键:值”对>>> x['age']=25>>> x{'age': 25, 'name': 'John'}>>>
2.求长度
len()函数可返回字典长度,即“键:值”对的个数。例如:
>>> x=dict(zip(['name','age'],['John',25]))>>> len(x)2
3.关系判断
in操作符可用于判断字典是否包含某个键。例如:
>>> x=dict(zip(['name','age'],['John',25]))>>> 'name' in xTrue>>> 'sex' in xFalse
4.索引
字典通过键来索引映射的值。例如:
>>> x={'book':{'Python编程':100,'C++入门':99},'publish':'人民邮电出版社'}>>> x['boo']Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'boo'>>> x['book']{'Python编程': 100, 'C++入门': 99}>>> x['publish']'人民邮电出版社'>>> x['book']['Python编程'] #用两个键索引嵌套的字典100
可通过索引修改映射值。例如:
>>> x=dict(name='John',age=25)>>> x{'age': 25, 'name': 'John'}>>> x['age']=30 #修改映射值>>> x{'age': 30, 'name': 'John'}>>> x['phone']='17055233456' #试图修改不存在的键的映射值时,添加“键:值”对>>> x{'age': 30, 'name': 'John', 'phone': '17055233456'}>>>
也可以通过索引删除键值对。例如:
>>> x=dict(name='John',age=25)>>> del x['name'] #删除键值对>>> x{'age': 25}
3、字典常用方法
Python为字典提供了一系列处理方法。
1.clear()
复制字典对象。例如:
>>> x=dict(name='John',age=25)>>> x.clear()>>> x{}
2.copy()
复制字典对象。例如:
>>> x={'name':'John','age':25}>>> y=x #直接赋值时,x和y引用同一个字典>>> x,y({'age': 25, 'name': 'John'}, {'age': 25, 'name': 'John'})>>> y['name']='Curry' #通过y修改字典>>> x,y #显示结果相同({'age': 25, 'name': 'Curry'}, {'age': 25, 'name': 'Curry'})>>> y is x #判断是否引用相同对象True>>> y=x.copy() #y引用复制的字典>>> y['name']='Python' #修改y引用的字典映射值,此时不影响x的引用>>> x,y({'age': 25, 'name': 'Curry'}, {'age': 25, 'name': 'Python'})>>> y is x #判断是否引用相同对象False
3.get(key[,default])
返回key映射的值。如果key不存在,返回空值。可用default参数指定不存在的键的返回值。例如:
>>> x={'name':'John','age':25}>>> x.get('name') #返回映射值'John'>>> x.get('sex') #不存在的键返回值>>> x.get('sex','xxx') #不存在的键返回指定值'xxx'>>>
4.pop(key[,default])
从字典中删除键,并返回映射值。若键不存在,则返回default;未指定default参数时则会出错。例如:
>>> x={'name':'John','age':25}>>> x.pop('name') #删除键并返回映射值'John'>>> x{'age': 25}>>> x.pop('sex','xxx') #删除不存在的键'xxx'>>> x.pop('sex') #删除不存在的键,未指定default参数,出错Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'sex'
5.popitem()
从字典删除并返回键值对元组。空字典调用该方法会产生KeyError错误。例如:
>>> x={'name':'John','age':25}>>> x.popitem() #删除并返回键值对元组('age', 25)>>> x #x中剩余一个键值对{'name': 'John'}>>> x.popitem() ('name', 'John')>>> x{}>>> x.popitem() #空字典产生KeyError错误Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'popitem(): dictionary is empty'>>>
6.setdefault(key[,default])
该方法用于返回映射值或者为字典添加键值对。指定键key在字典中存在时,返回映射值。若指定值key不存在,则添加"key:default"键值对,省略default时,键值对默认为None。例如:
>>> x={'name':'John','age':25}>>> x.setdefault('name') #返回指定键的映射值'John'>>> x.setdefault('sex') #键不存在,为字典添加键值对,映射值默认为None>>> x{'age': 25, 'name': 'John', 'sex': None}>>> x.setdefault('phone','123456') #添加键值对'123456'>>> x{'age': 25, 'name': 'John', 'sex': None, 'phone': '123456'}>>>
7.update(other)
该方法用于为字典添加键值对。参数other可以是另一个字典或用赋值格式表示的元组。若字典已存在同名的键,则映射值被覆盖。例如:
>>> x={'name':'John','age':25}>>> x.update({'age':30,'sex':'male'}) #添加键值对,并覆盖同名键的映射值>>> x #age的映射值已被修改{'age': 30, 'name': 'John', 'sex': 'male'}>>> x.update(name='Mike') #修改映射值>>> x{'age': 30, 'name': 'Mike', 'sex': 'male'}>>> x.update(code=110,address='NewStreet') #添加键值对>>> x{'age': 30, 'address': 'NewStreet', 'name': 'Mike', 'sex': 'male', 'code': 110}
4、字典视图
字典的item ()、keys()和values()方法用于返回字典键值对的试图对象。视图对象支持迭代操作,并可反映未来对字典的修改。试图对象不是列表,不支持索引。通常用list()方法将视图对象转换为列表。
1.items()
items()方法返回键值对视图。例如:
>>> x={'name':'John','age':25}>>> y=x.items() #返回键值对视图>>> y #显示键值对视图,键值对视图为dict_items对象dict_items([('age', 25), ('name', 'John')])>>> x{'age': 25, 'name': 'John'}>>> for a in y:print(a) #迭代键值对视图...('age', 25)('name', 'John')>>> x['age']=30 #修改字典>>> x{'age': 30, 'name': 'John'}>>> y #从显示结果可以看出视图反映了字典中的修改内容dict_items([('age', 30), ('name', 'John')])>>> list(y) #将键值对视图转换为列表[('age', 30), ('name', 'John')]>>>
2.keys()
keys()方法返回字典中所有键的视图。例如:
>>> x={'name':'John','age':25}>>> y=x.keys() #返回字典的键视图>>> y #显示键视图,键视图为dict_keys对象dict_keys(['age', 'name'])>>> x['sex']='male' #为字典添加键值对>>> x{'age': 25, 'name': 'John', 'sex': 'male'}>>> y #显示结果说明键视图包含了新添加的键dict_keys(['age', 'name', 'sex'])>>> list(y) #将键视图转换为列表['age', 'name', 'sex']>>>
3.values()
values()方法返回字典中全部值的视图。例如:
>>> x={'name':'John','age':25}>>> y=x.values() #返回字典的值视图>>> y #显示值视图,值视图为dict_values对象dict_values([25, 'John'])>>> x['sex']='male' #添加键值对>>> y #值视图包含了新添加的值dict_values([25, 'John', 'male'])>>> list(y) #将值视图转换为列表[25, 'John', 'male']>>>
4.键视图的集合操作
键视图支持各种操作运算,键值对视图和值视图不支持集合运算。例如:
>>> x={'a':1,'b':2}>>> kx=x.keys() #返回x的键视图>>> kxdict_keys(['b', 'a'])>>> y={'b':3,'c':4}>>> ky=y.keys() #返回y的键视图>>> kydict_keys(['b', 'c'])>>> kx-ky #求差集{'a'}>>> kx|ky #求并集{'b', 'a', 'c'}>>> kx&ky #求交集{'b'}>>> kx^ky #求对称差集{'a', 'c'}>>>
- python 数据类型:字典
- python 数据类型:字典
- Python数据类型 -- 字典
- Python数据类型之字典
- Python数据类型-字典
- python数据类型--字典
- python数据类型--字典
- Python数据类型:字典
- Python的数据类型--字典以及字典练习
- python数据类型——字典
- python-基本数据类型之字典
- python3之python的核心数据类型(字典)
- Python:字典数据类型的一些知识
- Python核心数据类型之字典15
- [2016/12/1]python数据类型之字典
- Python 数据类型--字典(dict)基本操作
- python基础2数据类型之字典
- python组合数据类型--元组,字典
- android电量优化措施
- DBCP和C3P0的区别
- PADS VX1.2安装包和破解包
- JsonMappingException: No suitable constructor found for type
- dom11克隆replaceChild
- Python数据类型:字典
- 极大极小搜索问题
- ZStack OSAL的事件(event)与消息(message)
- 人工智能,深度学习,用DQN算法,或者更新的增强算法,进行图片识别小游戏?
- hibernate工作原理及作用
- android studio 使用c++ 原生代码开发,调试
- 非线性模型预测控制-建模方法
- VX下拉框中,v-repeat/v-value/v-model的使用
- ScrollView+RecyclerView优雅的解决滑动冲突问题