【循序渐进学Python】4. Python中的序列——字典
2013-10-20 15:13
543 查看
字典是Python内建的六种序列之一。字典作为一种常用的数据结构,字典中的值没有特定顺序,每个值都对应于一个唯一的键。键可以是数字、字符串甚至是元组。
字典由多个键以及对应的值组成,每个键及其对应的值为一项。上面的示例中每个阿拉伯数字(key)对应其中文的数字(value)。
len(d):返回d(字典对象)中项的数量;
d[key]:返回这个key对应的value;
d[key] = v:将值v映射到key值为k的项;
key in did:检查d中是否包含键为k的项;
字典和列表虽然都属于Python内建的序列,但是二者有很大的区别:
1.键类型:字典的键只能是不可变类型(比如:整型、字符串、元组、浮点型等)。
2.自动添加:即使一个键在字典中不存在,也可以为其分配一个值。如下示例:
3.成员资格:表达式key in dic(dic是一个字典)是根据键来查找,而不是值。因为键是唯一的,而不同键的值却可以相同。如下:
1.4.1 clear
1.4.2 copy
1.4.3 fromkeys
1.4.4 get
1.4.5 has_key
1.4.6 items和iteritems
1.4.7 keys和iterkeys
1.4.8 values和itervalues
1.4.9 pop
1.4.10 popitem
1.4.11 setdefault
1.4.12 update
《Learn Python The Hard Way, 2nd Edition》
http://www.pythondoc.com/pythontutorial27/index.html
1. 创建和使用字典
Python中字典可以使用下面的语法来直接创建字典对象:# ---coding: utf-8 --- phonebook = {'1':'一','2':'二','3':'三','4':'四','5':'五'}
字典由多个键以及对应的值组成,每个键及其对应的值为一项。上面的示例中每个阿拉伯数字(key)对应其中文的数字(value)。
1.1 使用dict函数
除了使用上面的语法外,还可以通过dict函数将(key -> value)这样形式的序列转换为字典。# --- coding: utf-8 --- items = [('name','Gumby'),('age',42)] #使用dict函数 dic = dict(items) # 输出:{'age': 42, 'name': 'Gumby'} print dic # 输出:<type 'list'>,类型是一个列表 print type(items) # 输出:<type 'dict'> print type(dic)
1.2 字典的基本操作
由于字典也是序列的一种,所起它有很多操作(比如len和成员资格)都和序列类似:len(d):返回d(字典对象)中项的数量;
d[key]:返回这个key对应的value;
d[key] = v:将值v映射到key值为k的项;
key in did:检查d中是否包含键为k的项;
字典和列表虽然都属于Python内建的序列,但是二者有很大的区别:
1.键类型:字典的键只能是不可变类型(比如:整型、字符串、元组、浮点型等)。
2.自动添加:即使一个键在字典中不存在,也可以为其分配一个值。如下示例:
# --- coding: utf-8 --- # 声明一个空列表对象 x = [] # IndexError:list assignment index out of range # 列表只能够为其索引范围内的元素赋值 x[42] = 'foobar' # 将x的引用变为一个空字典对象 x = {} x[42] = 'Foobar' # 输出:{42: 'Foobar'} print x
3.成员资格:表达式key in dic(dic是一个字典)是根据键来查找,而不是值。因为键是唯一的,而不同键的值却可以相同。如下:
people = { 'Alice':{ 'phone':'2341', 'addr':'Foo drive 23' }, 'Beth':{ 'phone':'1213', 'addr':'Baz avenue 90' }, 'Ceil':{ 'phone':'3219', 'addr':'Baz avenue 90' } } # output: True print 'Ceil' in people
1.3 字典的格式化字符串
字典还有一个有用的地方就可以用来进行格式化字符串,相对于使用元组来说具备更好的可读性。使用字典来格式化字符串很简单,只需要在转换说明符(%)后面加上一个圆括号,圆括号里面是字典的键,接着后面是其他的说明元素,如下所示:phonebook = { 'Beth':'1290','Alice':'1239','Ceil':'3258' } #output: Alice's phone number is 1239. print "Alice's phone number is %(Alice)s." % phonebook
1.4 字典常用函数
Python为字典提供了很多的函数,更多可以参考Python文档中dict的API:Dictionaries,下面例举了几个最常用的函数。1.4.1 clear
Clear函数会清除字典中所有的项。
# --- coding: utf-8 --- # clear函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print pro_Language # 输出: {'C#': 'microsoft', 'Java': 'Oracle'} print pro_Language.clear() # 输出:None print pro_Language # 输出:{}
1.4.2 copy
Copy函数会返回一个具有相同key-value对的新字典(浅复制)
# --- coding: utf-8 --- # copy函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} copy_Pro_Language = pro_Language.copy() # 输出: {'C#': 'microsoft', 'Java': 'Oracle'} print copy_Pro_Language
1.4.3 fromkeys
fromkeys函数使用给定的键建立新的字典,每个键默认对应的值为None。
# --- coding: utf-8 --- # fromkeys函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print {}.fromkeys(['C#','Java']) # 输出:{'C#': None, 'Java': None} print dict.fromkeys(['C#','Java']) # 输出:{'C#': None, 'Java': None}
1.4.4 get
get函数可以访问字典中的项,如果不存在,返回一个None(或者自定义一个默认值)
# --- coding: utf-8 --- # get函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print pro_Language.get('python') # 输出:None print pro_Language.get('python','N/A') #输出:N/A
1.4.5 has_key
has_key函数可以检测字典中是否含有给出的键。
# --- coding: utf-8 --- # has_key函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print pro_Language.has_key('python') # 输出:False
1.4.6 items和iteritems
items函数将所有的字典项以列表方式返回。
iteritems函数作用和
items类似,但是会返回一个迭代器对象而不是一个列表
# --- coding: utf-8 --- # items/iteritems 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} # 输出:[('C#', 'microsoft'), ('Java', 'Oracle')] print pro_Language.items() # 输出:<dictionary-itemiterator object at 0x0000000002659BD8> print pro_Language.iteritems()
1.4.7 keys和iterkeys
keys函数将字段中的键以列表的形式返回,而
iterkeys则返回针对键的迭代器
# --- coding: utf-8 --- # keys/iterkeys 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} # 输出:['C#', 'Java'] print pro_Language.keys() # 输出:<dictionary-keyiterator object at 0x0000000002659BD8> print pro_Language.iterkeys()
1.4.8 values和itervalues
values函数将字段中的值以列表的形式返回,而
itervalues则返回针对值的迭代器
# --- coding: utf-8 --- # values/itervalues 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} # 输出:['microsoft', 'Oracle'] print pro_Language.values() # 输出:<dictionary-valueiterator object at 0x0000000002529BD8> print pro_Language.itervalues()
1.4.9 pop
pop函数用来获得对应给定键的值,然后将这个项(key-value)从字典中删除
# --- coding: utf-8 --- # pop 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print pro_Language.pop('C#') # 返回:microsoft print pro_Language # 输出:{'Java': 'Oracle'}
1.4.10 popitem
popitem函数会获取一个随机的项,然后删除。
# --- coding: utf-8 --- # popitem 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} print pro_Language.popitem() # 返回:('C#', 'microsoft') print pro_Language # 输出:{'Java': 'Oracle'}
1.4.11 setdefault
setdefault函数和set函数类似,但
setdefault函数还能在字典中不包含给定键的情况下,设定相应的值。
# --- coding: utf-8 --- # setdefault 函数 pro_Language = {"C#":"microsoft","Java":"Oracle"} pro_Language.setdefault('Python',"N/A") # 输出:{'C#': 'microsoft', 'Python': 'N/A', 'Java': 'Oracle'} print pro_Language
1.4.12 update
update函数可以利用一个字典对象更新另一个字典对象,提供字典中的项会添加到旧的字典中,如果有相同的键则会覆盖
# --- coding: utf-8 --- # update pro_Language = {"C#":"microsoft","Java":"Oracle"} script_Language = {'Java':'Sun','python':'Python Software Foundation'} pro_Language.update(script_Language) # 输出:{'C#': 'microsoft', 'python': 'Python Software Foundation', 'Java': 'Sun'} print pro_Language
参考资料&进一步阅读
《Python基础教程》《Learn Python The Hard Way, 2nd Edition》
http://www.pythondoc.com/pythontutorial27/index.html
相关文章推荐
- python基础(序列,元祖,列表,字典,对象,类)
- Python中数据结构 列表 元组 字典 序列
- 走进Python世界(五)数据类型 5. 序列类型-字典(Dictionary)
- Python列表,元组,字典,序列,引用
- python中的序列和字典
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- 1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)
- Python中的for循环(序列、元组与字典)
- Python数据结构——序列、字典
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python序列之字典(dict)
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- python的列表,元组,字典,序列,字符串的简单解说
- python 造轮子(一)——序列与字典
- Python--序列学习(四)--字典
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- Python中序列、列表、元祖(数组)、集合、字典
- python-数组,序列,字典,列表,序表,元祖(tuple)
- python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体