您的位置:首页 > 编程语言 > Python开发

Python字典 (dict)

2016-01-19 16:21 996 查看
作者博文地址:http://www.cnblogs.com/spiritman/

字典是Python语言中唯一的映射类型。字典对象是可变的,它是一个容器类型,支持异构、任意嵌套。

创建字典

  语法:{key1:val1,key2:val2,.....}

  dict1 = {}      #创建空字典

  dict2 = {'n1':'liush','n2':'spirit','n3':'tester'}

  使用函数dict创建字典

>>>D = dict(name='spititman',age=28,gender='M')
>>>print D
{'gender': 'M', 'age': 28, 'name': 'spititman'}


  使用zip和dict创建字典

zip语法:
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
实例展示:
>>>L = zip('xyz','123')
>>>print L
[('x', '1'), ('y', '2'), ('z', '3')]

>>>L = zip('xyz','123','abc')
>>>print L
[('x', '1', 'a'), ('y', '2', 'b'), ('z', '3', 'c')]
################################################################################
>>>D = dict(zip('xyz','123'))
>>>print D
{'y': '2', 'x': '1', 'z': '3'}

>>>D = dict(zip('xyz','123','abc'))
>>>print D
ValueError: dictionary update sequence element #0 has length 3; 2 is required


字典常用操作及实例展示

  可以使用dir(dict)查看字典支持的操作方法

clear

  功能:清空字典所有元素

  语法:D.clear() -> None. Remove all items from D

  实例展示:

>>>D = {'n1':'liush','n2':'spirit','n3':'tester'}
>>>D.clear()
>>>print D
{}


copy

  功能:浅复制字典。

  语法:D.copy() -> a shallow copy of D

  实例展示:

>>>D = {'n1':'liush','n2':'spirit','n3':'tester'}
>>>id(D)
140388211911208
>>>D1 = D.copy()
>>>print D1
{'n1': 'liush', 'n2': 'spirit', 'n3': 'tester'}
>>>id(D1)
140388110074776


fromkeys

  功能:用于创建一个新字典,以序列S中的元素作为字典的键,v为新字典中所有键对应的初始值,默认为none。

  语法:dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.v defaults to None

  实例展示:

>>>L = ['spirit','man','liush']
>>>D_L = dict.fromkeys(L)
>>>print D_L
{'liush': None, 'spirit': None, 'man': None}
########################################################
>>>D_L = dict.fromkeys(L,'test')
>>>print D_L
{'liush': 'test', 'spirit': 'test', 'man': 'test'}


get

  功能:获取指定键的值

  语法:D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>D1 = D.get('n4')
>>>print D1
none                    #n4不在字典D中,返回默认值none
##########################################################
>>>D2 = D.get('n4','check')
>>>print D2
check                   #n4不在字典D中,返回指定值check
##########################################################
>>>D3 = D.get('n2')
>>>print D3
spirit                  #n2在字典D中,返回n2对应的值
##########################################################
>>>D4 = D.get('n2','check')
>>>print D4
spirit                  #n2在字典D中,指定值无效,依然返回其对应值


has_key

  功能:判断字典中是否存在指定键

  语法:D.has_key(k) -> True if D has a key k, else False

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>D.has_key('n4')
False
######################################################
>>>D.has_key('n2')
True


items

  功能:返回以字典中的键值对组成的元组作为元素的列表

  语法:D.items() -> list of D's (key, value) pairs, as 2-tuples

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.items()
>>>print L
[('n1', 'liushuai'), ('n2', 'spirit'), ('n3', 'tester')]
>>>type(L)
<type 'list'>


iteritems

  功能:对以字典中的键值对组成的元组进行迭代,可用于for循环

  语法:D.iteritems() -> an iterator over the (key, value) items of D

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.iteritems()
>>>print L
<dictionary-itemiterator object at 0x7faea6c97158>  #生成一个迭代器地址
>>>L.next()              #开始迭代
('n1', 'liushuai')
>>>L.next()
('n2', 'spirit')
>>>L.next()
('n3', 'tester')
>>>L.next()              #迭代完成后报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
#########################################################################
>>>for i in D.iteritems():      #使用for循环遍历
...    print i
18 ...
('n1', 'liushuai')
('n2', 'spirit')
('n3', 'tester')


iterkeys

  功能:对字典中的键进行迭代(遍历)

  语法:D.iterkeys() -> an iterator over the keys of D

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.itervalues()
>>>print L
<dictionary-keyiterator object at 0x7faea6c971b0>
>>>L.next()
'n1'
>>>L.next()
'n2'
>>>L.next()
'n3'
>>>L.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
#############################################################
>>>for i in D.iterkeys():
...     print i
...
n1
n2
n3


itervalues

  功能:对字典中的键进行迭代(遍历)

  语法:D.itervalues() -> an iterator over the values of D

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.itervalues()
>>>print L
<dictionary-valueiterator object at 0x7faea6c97208>
>>>L.next()
'liushuai'
>>>L.next()
'spirit'
>>>L.next()
'tester'
>>>L.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
#############################################################
>>>for i in D.itervalues():
...     print i
...
liushuai
spirit
tester


keys

  功能:以列表的形式返回所有键

  语法:D.keys() -> list of D's keys

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.keys()
>>>print L
['n1','n2','n3']


pop

  功能:从字典中删除指定的键,返回其对应的值。

  语法:D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>D.pop('n4')        #指定的键不存在,返回报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
##################################################
KeyError: 'n4'        #指定的键不存在,返回指定的值
>>>D.pop('n4','check')
'check'
##################################################
>>>D.pop('n2')            #指定的键存在,返回其对应值
'spirit'
##################################################
>>>D.pop('n3','check')    #指定的键存在,指定值无效,依然返回其对应值
'tester'
##################################################


popitem

  功能:随机删除字典的键值对并以元组的形式返回

  语法:D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>D.popitem()
('n1', 'liushuai')
>>>D.popitem()
('n2', 'spirit')
>>>D.popitem()
('n3', 'tester')
>>>D.popitem()             #当字典为空时,抛出异常。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'


setdefault

  功能:查找键值。若键不在字典中,将会添加键并将值设定为默认值

  语法:D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
##指定的键存在,则返回其对应的值,原字典不变
>>>D.setdefault('n2')
'spirit'
>>>print D
{'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
#######################################################################
##指定的键不存在,则修改原字典,该键对应的值默认为none
>>>D.setdefault('n4')
>>>print D
{'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester', 'n4': None}
#######################################################################
##指定的键不存在,则修改原字典,该键对应的值为指定值
>>>D.setdefault('n5','check')
>>>print D
{'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester', 'n4': None, 'n5': 'check'}


update

  功能:以字典或迭代器更新原字典

  语法: D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
    If E present and has a .keys() method, does: for k in E: D[k] = E[k]
    If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>D1 = {'n1':'liush','n4':'Jerry'}
>>>D2 = {1:'IT',2:'SALE'}
#键相同时,则其对应的原字典的值将被覆盖
>>>D.update(D1)
{'n1': 'liush', 'n2': 'spirit', 'n3': 'tester', 'n4': 'Jerry'}
####################################################
#键不同时,则追加
>>>D.update(D2)
{1: 'IT', 2: 'SALE', 'n1': 'liush', 'n2': 'spirit', 'n3': 'tester', 'n4': 'Jerry'}


values

  功能:以列表的形式返回所有值

  语法:D.values() -> list of D's values

  实例展示:

>>>D = {'n1': 'liushuai', 'n2': 'spirit', 'n3': 'tester'}
>>>L = D.values()
>>>print L
['liushuai', 'spirit', 'tester']


作者博文地址:http://www.cnblogs.com/spiritman/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: