一、字典的概述 
字典是python中唯一的映射类型,映射类型对象里哈希值和指向对象值是1:n的关系 
字典对象是可变的,可以认为是一个容器类型,能存储任意个python对象 
字典对象和序列对象的区别: 
        1.存储和访问数据的方式不同 
        2.映射类型的数据是无序排序 
        3.序列类型只能是数字类型的键,映射类型可以是其他类型的键 
        4.映射类型不要求用数字值做索引从一个容器中取对应的数据。可以用键直接映射到值 
(1).字典的创建和赋值 
    创建字典只需要把一个字典赋值给一个变量 
    如:dict={‘name’:’earth’,’port’:80} 
        2.可用工厂方法dict()创建 
        如:fdict=dict(([‘x’,’1’],[‘y’,2])) 
        3.可用fromkeys()创建一个默认的字典 
        如:ddict ={}.fromkeys((‘x’,’y’),-1)
(2):字典的访问 
1.循环其键值。如:  
for key in dict.keys(): 
    print ‘key=%s,value=%s’ %(key,dict[key]) 
2.用迭代器遍历字典,只需要知道字典的名字即可,如 
    dict={‘name’:’zhang’,’port’:80} 
    for key in dict: 
            print ‘key=%s,value=%s’ %(key,dict[key]) 
3.获得字典的某个元素值 
    dict[key]  如:dict[name]=’zhang’ 
    若需检查字典是否有某一个key 可以用in 或not in 等 
(3):字典的更新 
1.添加一个新数据项或新元素  
  可以用字典变量名[key]=value;如 test={age:20.} test[name] =’student’ 则可得到tet={age:20,name:’student’} 
2.改变一个已存在的数据项 
  字典的修改和添加类似,可以用字典变量名[key]=新value  
3.删除一个已存在的数据项 
  del dict[key]:删除对应的键值,若用字典变量名则删除整个字典.如  del dict 
dict.clear() :清空字典内容 
  pop():删除对对应的值
二、映射类型操作符 
(1).字典的键查找操作符[] 
 1.键查找操作符是唯一用于字典类型的操作符,和序列中的单一元素切片相似 
 2.字典是用键查询,序列用索引做唯一参数或下标获取
(2).成员关系操作(in not in) 
 in 和not in 检查某个键是否在字典中 
 如:name in dict 
三、内建函数和工厂函数 
(1).标准类型函数 
    cmp() 
    type() 
    str(0 
(2).映射相关函数 
    dict():用于创建字典,若不提供参数,则会生成空字典。 
    如 dict(zip((‘x’,’y’),(1,2))) => {‘x’:1,’y’:2} 
    或者 dict([‘x’,1],[‘y’,2]) => {‘x’:1,’y’:2} 
    len():返回所有元素的数目 
    如 dict={‘x’:1,’y’:2} 则len(dict)=2 
    hash()’
(3):内建方法 
       1.keys():返回一个列表包含字典所有的键   dict.keys() =>[‘x’,’y’] 
       2.values():返回一个列表,包含字典所有的值 如dict.values => [1,2] 
       3.items():返回一个列表包含所有含有(键,值)的元组  如dict.items() => [(‘x’,1),(‘y’,2)] 
       4.update() 如dict.update(dict2) 将字典dict2的key-value添加到字典dict 如dict2={‘x’:1,’y’:2,’z’:3} dict.update(dict2)  
            =>   {‘x’:1,’y’:2,’z’:3} 
       5.setdefault() 和set()类似,若字典不存在key 由dict[key]=default为它赋值 
       6.clear() 删除字典中所有元素  如  dict.clear() => {} 
       7.copy()  返回一个字典的副本  如dict2=dict.copy() => {‘x’:1,’y’:2}
四、字典的键 
    字典的键必须是不可变数据类型,如果用元组做键,那必须要保证元组内的对像也是不可变类型。可变数据类型对像不能做键。
一、集合类型 
set是不同元素组成的集合,python中的集合对象是一组无序排列的可hash的值。 
集合分为两种类型.可变集合(set)和不可变集合(frozenset)。可变集合可以删除或添加元素,不可变集合不充许;可变集合不是可          哈希的 不能用作字典的键,也不能用作其他集合中的元素,不可变集合真好相反 
(1)、集合的创建 
  主要有set()和frozenset()方法 
  如:s=set(‘abcd’)   => set([‘a’,’b’,’c’,’d’]);  frozenset(‘BOOK’) =>frozenset([‘B’,’O’,’O’,’K’])  
(2).集合的访问 
  可以遍历和检查某项元素是否是一个集合的元素 
  如:  ‘K’ in s 
(3).更新集合 
  可以用集合内建方法进行添加,删除集合的成员 
  如: 
      s.add(‘z’) 
      s.update(‘pypj’) 
      s-=set(‘pypj’) 
      s.remove()
(4).如何删除集合中的成员和集合 
 A.集合超出其作用范围 
 B.调用del将他们直接清除当前的名称空间 
二、集合类型操作符 
    set集合是无序的,不能通过索引和切片来做一些操作 
三、内建函数和内建方法 
    (1).内建函数: 
        len():返回集合的基数 
        set()和frozenset()返回可变集合和不可变集合 若不提供参数则会生成空集合
(2).内建方法:可分为适用于所有的集合方法和适用于可变集合的方法 
        1.仅适用于可变集合的如下: 
            s.update(t)  s.add(obj)  s.remove(obj) s.discard(obj) s.pop():删除集合s中的任意一个对象 
            s.clear() 删除集合s中的所有元素
该例子用于模拟管理登录系统
#!/usr/bin/env python
#-*-coding:utf-8 -*-
db = {}
def newuser():
    prompt = ‘login desired‘
    while True:
        name = raw_input(prompt)
        if db.has_key(name):
            prompt = ‘name taken, try anothers‘
            continue
        else:
            break
    pwd = raw_input(‘password:‘)
    db[name] = pwd
def olduser():
    name = raw_input(‘login: ‘)
    pwd = raw_input(‘passwd: ‘)
    passwd = db.get(name)
    if passwd == pwd:
        print ‘welcome back‘,name
    else:
        print ‘login incorrect‘
def showmenu():
    prompt = ‘‘‘
(N)ew User Login
(E)xisting User Login
(Q)uit
Enter choice:
‘‘‘
    done = False
    while not done:
        chosen = False
        while not chosen:
            try:
                choice = raw_input(prompt).strip()[0].lower()
            except (EOFError, KeyboardInterrupt):
                choice = ‘q‘
            print ‘\nyou picked:[%s]‘ %choice
            if choice not in ‘neq‘:
                print ‘invalid option, try again‘
            else:
                chosen = True
        if choice == ‘q‘ :done = True
        if choice == ‘n‘ :newuser()
        if choice == ‘e‘ :olduser()
if __name__ == ‘__main__‘:
    showmenu()原文地址:http://blog.csdn.net/w2cschool/article/details/45624015