字典
2014-02-25 08:39
190 查看
1、创建和使用字典
1.1、dict函数:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典,
类似于list,tuple、str等
>>> phonebook = {'xiaoming':'1234', 'xiaohong':'3455'}
>>> phonebook
{'xiaoming': '1234', 'xiaohong': '3455'}
>>> phonebook = dict([('xiaoming','1234'), ('xiaohong',3455)])//通过序列
>>> phonebook
{'xiaoming': '1234', 'xiaohong': 3455}
>>> phonebook = dict(xiaoming = 1234,xiaohong = 3455)
>>> phonebook
{'xiaoming': 1234, 'xiaohong': 3455}
1.2、字典基本操作
len(d):返回d中项(键值对)的数量
d[k] :返回关联到键k上的值
d[k]=v :把值v关联到键k上
del d[k]:删除键为k的项
k in d :检查d中是否有含有键为k的项
字典的特殊之处:
1.2.1、键类型:字典的键不一定为整型数据(但也可以是),也可能是其他不可变类型,
比如浮点型(实型)、字符串或者元组。
自动添加:即使那个键起初在字典中并不存在,也可以为它分配一个值,这样字
典就会建立新的项,而(不在使用append方法或者其他类似的操作的情
况下)不能将值关联到列表范围之外的索引上。
成员资格:表达式k in d 查找的是键,而不是值,表达式v in l(l为列表)则用来
查找值,而不是索引,这样看起来好像不太一致,但是习惯以后就会感觉
非常自然了。毕竟,如果字典含有指定的键,查找相应的值也是很容易的。
1.2.2、举例:
>>> x = []
>>> x[42]='xiaohong'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> x={}
>>> x[42]='xiaohong'
>>> x
{42: 'xiaohong'}
1.3、字典的格式化字符串
>>> phonebook={'xiaoming':1234, 'xiaohong':3455}
>>> "xiaohong's phone num is %(xiaohong)s" % phonebook
"xiaohong's phone num is 3455"
1.4、字典方法
1.4.1、clear:清空字典,原地操作,无返回值
>>> x={}
>>> y=x
>>> x['key']='value'
>>> y
{'key': 'value'}
>>> x={}
>>> y
{'key': 'value'}
>>> x.clear()
>>> y
{'key': 'value'}
>>> x=y
>>> x
{'key': 'value'}
>>> y.clear()
>>> x
{}
1.4.2、copy:这个方法实现的是浅拷贝,还有个深拷贝:
from copy import deepcopy
1.4.3、fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None,也可自己规定默认值
>>> dict.fromkeys(['xiaoming','xiaohong'],'(unknown)')
{'xiaoming': '(unknown)', 'xiaohong': '(unknown)'}
>>> dict.fromkeys(['xiaoming','xiaohong'])
{'xiaoming': None, 'xiaohong': None}
1.4.4、get:更宽松的访问字典项的方法,一般来说,如果试图访问字典中不存在的项时会出错
>>> d[name]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
>>> print d.get('name')
None
1.4.5、has_key:检查字典中是否含有某个键
1.4.6、items和iteritems:items方法把所有的字典以列表方式返回,这些列表项中每一项都来自于
(键,值)。但是项在返回时并没有特殊的顺序
>>> d = dict(xiaoming='12345',xiaohong='2355')
>>> d
{'xiaoming': '12345', 'xiaohong': '2355'}
>>> d.items()
[('xiaoming', '12345'), ('xiaohong', '2355')]
>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0xb7cbb920>
>>> list(it)
[('xiaoming', '12345'), ('xiaohong', '2355')]
1.4.7、keys和iterkeys:keys方法将字典中的键以列表的方式返回,而iterkeys则返回针对键的迭代器。
1.1、dict函数:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典,
类似于list,tuple、str等
>>> phonebook = {'xiaoming':'1234', 'xiaohong':'3455'}
>>> phonebook
{'xiaoming': '1234', 'xiaohong': '3455'}
>>> phonebook = dict([('xiaoming','1234'), ('xiaohong',3455)])//通过序列
>>> phonebook
{'xiaoming': '1234', 'xiaohong': 3455}
>>> phonebook = dict(xiaoming = 1234,xiaohong = 3455)
>>> phonebook
{'xiaoming': 1234, 'xiaohong': 3455}
1.2、字典基本操作
len(d):返回d中项(键值对)的数量
d[k] :返回关联到键k上的值
d[k]=v :把值v关联到键k上
del d[k]:删除键为k的项
k in d :检查d中是否有含有键为k的项
字典的特殊之处:
1.2.1、键类型:字典的键不一定为整型数据(但也可以是),也可能是其他不可变类型,
比如浮点型(实型)、字符串或者元组。
自动添加:即使那个键起初在字典中并不存在,也可以为它分配一个值,这样字
典就会建立新的项,而(不在使用append方法或者其他类似的操作的情
况下)不能将值关联到列表范围之外的索引上。
成员资格:表达式k in d 查找的是键,而不是值,表达式v in l(l为列表)则用来
查找值,而不是索引,这样看起来好像不太一致,但是习惯以后就会感觉
非常自然了。毕竟,如果字典含有指定的键,查找相应的值也是很容易的。
1.2.2、举例:
>>> x = []
>>> x[42]='xiaohong'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> x={}
>>> x[42]='xiaohong'
>>> x
{42: 'xiaohong'}
1.3、字典的格式化字符串
>>> phonebook={'xiaoming':1234, 'xiaohong':3455}
>>> "xiaohong's phone num is %(xiaohong)s" % phonebook
"xiaohong's phone num is 3455"
1.4、字典方法
1.4.1、clear:清空字典,原地操作,无返回值
>>> x={}
>>> y=x
>>> x['key']='value'
>>> y
{'key': 'value'}
>>> x={}
>>> y
{'key': 'value'}
>>> x.clear()
>>> y
{'key': 'value'}
>>> x=y
>>> x
{'key': 'value'}
>>> y.clear()
>>> x
{}
1.4.2、copy:这个方法实现的是浅拷贝,还有个深拷贝:
from copy import deepcopy
1.4.3、fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None,也可自己规定默认值
>>> dict.fromkeys(['xiaoming','xiaohong'],'(unknown)')
{'xiaoming': '(unknown)', 'xiaohong': '(unknown)'}
>>> dict.fromkeys(['xiaoming','xiaohong'])
{'xiaoming': None, 'xiaohong': None}
1.4.4、get:更宽松的访问字典项的方法,一般来说,如果试图访问字典中不存在的项时会出错
>>> d[name]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
>>> print d.get('name')
None
1.4.5、has_key:检查字典中是否含有某个键
1.4.6、items和iteritems:items方法把所有的字典以列表方式返回,这些列表项中每一项都来自于
(键,值)。但是项在返回时并没有特殊的顺序
>>> d = dict(xiaoming='12345',xiaohong='2355')
>>> d
{'xiaoming': '12345', 'xiaohong': '2355'}
>>> d.items()
[('xiaoming', '12345'), ('xiaohong', '2355')]
>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0xb7cbb920>
>>> list(it)
[('xiaoming', '12345'), ('xiaohong', '2355')]
1.4.7、keys和iterkeys:keys方法将字典中的键以列表的方式返回,而iterkeys则返回针对键的迭代器。
相关文章推荐
- 字典中查找兄弟词,如 army 与 mary为兄弟单词(2012.5.6百度实习生笔试)
- Python成长之路第二篇(3)_字典的置函数用法
- python实现一个字典
- Objective-C 字典小结
- 字符串,数组,字典写入本地文件和从本地文件读取
- python中字典不自动排序/删除指定类型文件/执行可执行文件的返回值
- 字典对象(NSDictionary 和 NSMutableDictionary)-Objective-C
- Python对商品属性进行二次分类并输出多层嵌套字典
- python 合并字典的方法
- [转载]PHP导出数据库数据字典脚本
- swift-集合类型03-字典和数组
- python列表元组字典
- oracle 常用数据字典
- python 列表转为字典的两个小方法
- VBA学习9_ fso提取汇总文件夹及其下的文件名及内容(递归操作字典汇总)
- 字符串练习:对字符串数组,按字典顺序排列大小
- [Python入门]Chapter11 字典
- Python中的字典及举例
- Dive Into Python 学习记录1-函数/模块导入/字典/列表/元组/字符串分割、连接、格式化/映射list/
- [jQuery学习系列三 ]3-JQuery学习二-字典操作