Python:字典
来源:互联网 发布:网站源码吧 编辑:程序博客网 时间:2024/05/01 10:18
字典是内建映射类型,没有特殊的顺序,但是都存储在一个特定的键(key)里,键可以是数字、字符串,甚至是元组
1、字典创建:
>>> items = {'Alice': '2341', 'Beth': 9102, 'Cecil': '3258'}
2、相关函数
1、dict函数
通过其他映射(比如字典)或者(键,值)这样的序列对建立字典
>>> 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、基本操作
len(d):返回d中项的数量
d[k]:返回关联到键K上的值
d[k] = v:将值v关联到键K上
del d[k]:删除键K的项
k in d:检查d中是否有键为K的项
3、clear函数
清楚字典中的项,操作原字典,无返回序列
>>> d = {}>>> d['name'] = 'Gumby'>>> d['age'] = 42>>> d{'age': 42, 'name': 'Gumby'}>>> returned_value = d.clear()>>> d{}4、copy函数
返回一个与原字典相同的新字典(浅复制)
>>> x = {'username': 'admin', 'machines':['foo', 'bar', 'baz']}>>> y = x.copy()>>> y['username'] = 'mlh'>>> y['machines'].remove('bar')>>> y{'username': 'mlh', 'machines': ['foo', 'baz']}>>> x{'username': 'admin', 'machines': ['foo', 'baz']}副本中替换的时候原始字典不受影响,但是修改了某个值,原始字典也会改变深复制:deepcopy函数
>>> from copy import deepcopy>>> d = {}>>> d['name'] = ['Alfred', 'Bertrand']>>> c = d.copy()>>> dc = deepcopy(d)>>> d['name'].append('Clive')>>> d{'name': ['Alfred', 'Bertrand', 'Clive']}>>> c{'name': ['Alfred', 'Bertrand', 'Clive']}>>> dc{'name': ['Alfred', 'Bertrand']}
浅copy还有个隐藏的知识:
1.在副本字典中修改这些不可变对象(如字符串,数字,元组[只包含不可变对象的元组])是不会影响原始字典
2.在副本字典中修改可变对象,那么原始字典的内容会被影响
原因:不可变对象发生变化时会生成新的引用指向新的值,而可变对象的值发生变化时,不会生成新的引用
5、fromkeys函数
使用给定的键建立新的字典,默认键值为None,也可以自己提供默认值
>>> {}.fromkeys(['name', 'age']){'age': None, 'name': None}>>> dict.fromkeys(['name', 'age'], '(unknown)'){'age': '(unknown)', 'name': '(unknown)'}
6、get函数
访问字典项的方法,访问不存在的字典项,返回None(一般情况下,访问不存在的字典项时,会出错)
>>> d = {'name': 'Lily'}>>> print d.get('name')'Lily'>>> print d.get('age')None>>> d['age']Traceback (most recent call last): File "<pyshell#45>", line 1, in <module> d['age']KeyError: 'age'可以选择默认值,在访问值不存在的时候显示>>> d.get('age', 'no age')'no age'7、has_key函数
同表达式 k in d,检测字典中是否含有指定项
>>> d = {'name': 'Lily'}>>> d.has_key('name')True>>> d.has_key('age')False
8、items和iteritems
items方法将所有的字典项以列表方式返回,没有特殊的顺序
iteritems返回一个迭代器对象
>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}>>> d.items()[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]>>> it = d.iteritems()>>> it<dictionary-itemiterator object at 0x0124C8D0>>>> list(it)[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]
9、keys和iterkeys
keys将字典中的键以列表形式返回
iterkeys返回针对键的迭代器
10、pop函数
获得对应于给定键的值,然后将这个键-值从字典中移除
>>> d = {'value1': 'aa', 'value2': 'bb'}>>> d.pop('value1')'aa'>>> d{'value2': 'bb'}
11、popitem函数
随即弹出一个项,返回该项,并从字典中移除
12、setdefault函数
基本同get函数,在字典不含有给定键的情况下设定相应的键值,默认为None
>>> d = {}>>> d.setdefault('name', 'N/A')'N/A'>>> d{'name': 'N/A'}
13、update函数
利用一个字典更新另外一个字典
>>> d = {'vale1': 'aa', 'value2': 'bb'}>>> d{'vale1': 'aa', 'value2': 'bb'}>>> x = {'value3': 'cc'}>>> d.update(x)>>> d{'vale1': 'aa', 'value3': 'cc', 'value2': 'bb'}
14、values和itervalues
values以列表形式返回字典中的值,itervalues返回的则是相应的迭代器(返回的列表中可以包含相同的元素)
3、格式转换
例:html格式(模板)
>>> template = '''<html><head><title>%(title)s</title></head><body><h1>%(title)s</h1><p>%(text)s</p></body>'''>>> data = {'title': 'My Home Page', 'text': 'Welcome to my home page!'}>>> print template % data<html><head><title>My Home Page</title></head><body><h1>My Home Page</h1><p>Welcome to my home page!</p></body>
- Python 字典
- python 字典
- Python:字典
- Python 字典
- python字典
- Python 字典
- python 字典
- python 字典
- Python 字典
- Python字典
- python 字典
- python字典
- python 字典
- python 字典
- python--字典
- python 字典
- python字典
- Python---字典
- 常见Web技术之间的关系,你了解多少?
- test123
- 有用的vi 命令1
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- 关于Perl对中文的处理问题
- Python:字典
- Linux下时间和定时器
- sed命令简单使用-截取第n个关键字和倒数第m个关键字之前的内容
- 飞塔防火墙MAC地址绑定
- C#中dataGridView用法集
- ASP.NET MVC 3 —— Model远程验证
- 如何查看MySQL支持的数据类型?
- linux驱动中的request_irq
- asp.net中怎样调用存储过程和存储过程的写法