1,创建字典

>>> a={'a':1,'b':2,'c':3}
>>> a
{'a': 1, 'c': 3, 'b': 2}

通过dict()函数创建字典

>>>b=dict(['a',1],['b',2],['c',3])
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: dict expected at most 1arguments, got 3
>>>b=dict((['a',1],['b',2],['c',3]))
>>> b
{'a': 1, 'c': 3, 'b': 2}
 
>>> c=dict(a=1,b=1)
>>> c
{'a': 1, 'b': 1}
>>> c=dict('a'=1,'b'=2)
 File "<stdin>", line 1
SyntaxError: keyword can't be an expression
>>>

 

通过fromkeys()函数创建字典

>>> d={}.fromkeys(('x','y'),-1)
>>> d
{'y': -1, 'x': -1}
>>> d={}.fromkeys(('x','y'))
>>> d
{'y': None, 'x': None}
>>> a=(1,2,3,4)
>>> d={}.fromkeys(a)
>>> d
{1: None, 2: None, 3: None, 4: None}
>>> a=[1,2,3,4]
>>> d={}.fromkeys(a)
>>> d
{1: None, 2: None, 3: None, 4: None}
>>>

2,访问字典的值,dict[key]返回可以对应的value,如果key不在字典中会引发一个keyError

>>> a=dict(([1,2],[3,4],[5,6]))
>>> a
{1: 2, 3: 4, 5: 6}
>>>
>>> a[1]
2
>>> a['1']
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
KeyError: '1'
>>>

3,检查key是否在字典中?

>>> a={1:2,3:4,'5':6}
>>> a
{1: 2, 3: 4, '5': 6}
>>> a.haskey('5') #应该为a.has_key('5')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has noattribute 'haskey'
>>> a.haskey(1)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has noattribute 'haskey'
>>> a
{1: 2, 3: 4, '5': 6}
>>> '5' in a
True

4,更新字典

         I)添加新元素

>>>a=dict(([1,2],[3,4],['a','b']))
>>> a['e']='f'
>>> a
{'a': 'b', 1: 2, 3: 4, 'e': 'f'}

         II)更新旧元素

>>> a
{'a': 'b', 1: 2, 3: 4, 'e': 'f'}
>>> a['a']=0
>>> a
{'a': 0, 1: 2, 3: 4, 'e': 'f'}

         III)删除元素

>>> a
{'a': 0, 1: 2, 3: 4, 'e': 'f'}
>>> del a['e']
>>> a.pop('a') #删除元素,并且返回value值。
0
>>>

5,映射相关

1,比较

>>> a
{1: 2, 3: 4}
>>> b
{}
>>> cmp(a,b)
1
>>>

2len()返回字典的长度
3hash() 返回对象的哈希值,可以用来判断一个对象能否用来作为字典的键

4dict() 工厂函数,用来创建字典

6,字典的方法

>>>a=dict([[1,2],['a','b'],[1,'f']])
>>> a
{'a': 'b', 1: 'f'}
>>> a.keys()
['a', 1]
>>> a.values()
['b', 'f']
>>> a.items()
[('a', 'b'), (1, 'f')]
>>> a.clear()
>>> a
{}
>>>

1adict.keys()返回一个包含字典所有KEY的列表;
2adict.values() 返回一个包含字典所有value的列表;

3adict.items() 返回一个包含所有(键,值)元祖的列表;

4adict.clear() 删除字典中的所有项或元素;

5adict.copy() 返回一个字典浅拷贝的副本;

6adict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);

7adict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);

8adict.has_key(key) 如果key在字典中,返回True,否则返回False 现在用in not in

9adict.iteritems()adict.iterkeys()adict.itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;

10adict.pop(key[,default]) get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;

11adict.setdefault(key,default=None) set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;

12adict.update(bdict) 将字典bdict的键值对添加到字典adict中。

7,字典遍历

>>> a=(1,2,3,4,5,6,7,8,9,0)
>>> b={}.fromkeys(a,'a')
>>> a
(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
>>> b
{0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5:'a', 6: 'a', 7: 'a', 8: 'a', 9: 'a'}
>>> for key in b.keys():print key
...
0
1
2
3
4
5
6
7
8
9
>>> for value in b.values():printvalue,
...
a a a a a a a a a a
>>> for item in b.items():printitem,
...
(0, 'a') (1, 'a') (2, 'a') (3, 'a') (4,'a') (5, 'a') (6, 'a') (7, 'a') (8, 'a') (9, 'a')
>>> for item,value in b.items():
...    print 'key=%s,value=%s' %(item,value)
...
key=0,value=a
key=1,value=a
key=2,value=a
key=3,value=a
key=4,value=a
key=5,value=a
key=6,value=a
key=7,value=a
key=8,value=a
key=9,value=a
>>> for item,value inb.iteritems():
...    print 'key=%s,value=%s' %(item,value)
...
key=0,value=a
key=1,value=a
key=2,value=a
key=3,value=a
key=4,value=a
key=5,value=a
key=6,value=a
key=7,value=a
key=8,value=a
key=9,value=a