Python学习日记---字典

  字典是Python的一种数据结构,像数学中的映射集合,可以理解为由键和值成对存在的单元构成的一个列表。

一.字典构造形式:

 1.字典名 = {键名1:值1 ,键名2:值2 ,键名3:值3}

 例如 :Dic = {'op':55 , 3:('a','b') , 'q':[1.25,'score',5]}

 其中键只能是不可改变对象(如元组,字符串,整数等)和值可以为任意的对象


 2.可以使用dict()或{}构造一个空的字典如 Dic=dict() DIc={}


 3.zip命令创建字典

   创建2个列表一个用作键一个用作值

   字典名 = dict(zip(键列表,值列表))

>>> keys = ["red","white","blue"]
>>> values = [100,300,400]
>>> Dic = dict(zip(keys,values))
>>> Dic
{'red': 100, 'blue': 400, 'white': 300}

二.字典的索引:

 1.字典可以使用 [ ] 运算符,但与之前的列表元组等不同,字典不可以使用顺序的数字作为索引如   1,2,-1等

 2.字典需要使用键值作为索引,如1.的例子中,可以使用如下的索引方法 Dic['op'] Dic[3] Dic['q']

 3.既然字典的值可以是任意对象,那么就有可能为列表,元组,甚至是字典。那么当值为上述对象时候,使用字典名[键值]方式将得到一个集合,由此我们可以使用一个二维的方法进行索引

 范例:

>>> Dic={'a':{'q':'hello' , 'w':'how' , 'e':'Thanks'}}
>>> Dic['a']['e']
'Thanks'

一维结果为列表的话,二维的[]变可以使用顺序的数字索引


以此类推,当二维键所对应的值仍为字典等集合时,可以继续这样使用:

>>> Dic={'a':{'q':'hello' , 'w':'how' , 'e':{'u':'yes'}}}
>>> Dic['a']['e']['u']
'yes'

 4.如果在索引时,输入的键值不存在,Python将报错


三.字典的赋值:

  赋值方法为 字典名[键名] = 值 以此形成一个映射关系

 当待赋值的键名不存在时,python将直接在该字典中加入此键值对


四.与字典有关的操作:

 []:在方括号中使用键进行索引

 len():计算出的长度为字典中键值对的个数

 in:成员测试,判断键是否在该字典中

 for:循环找出字典中每个键值对


五.字典方法:

 items() : 生成所有键值对的元组列表

  keys() : 生成所有键的列表

 values(): 生成所有值的列表

  copy() : 对字典进行浅拷贝 (引用关系)


六.一个实例

  以《葛底斯堡演说》为例进行分析,判断其中的单词数和对应的频率,并进行排序显示

import string
def addword (word,Wdict):       #将word单词加入字典统计,没有添加键值对,有则值+1
    if(word in Wdict):
        Wdict[word]+=1
    else:
        Wdict[word]=1
def collect(line,Wdict):     #对line字符串进行分析,并拆分出有效单词加入到字典
    line = line.strip()
    wordline = line.split()
    for word in wordline:
        if(word == '--'):
            continue
        word = word.strip(string.punctuation)
        word = word.lower()
        addword(word,Wdict)
def Printf(Wdict):    #对字典内容排序输出函数
    resultwords = [[val,key] for key,val in Wdict.items()]
    resultwords.sort(reverse=True)
    print("%-12s%-10s"%('word','Count'))
    print('-'*21)
    for Count,Word in resultwords:
        if(Count>2):
            print("%-13s%-3d"%(Word,Count))
Wdict = {}      #在这也可以将下面的代码封装到main(),然后执行main()运行程序
FileODJ = open('wordtest.txt','rU')
for line in FileODJ:
    collect(line,Wdict)
Printf(Wdict)

        

 

 



你可能感兴趣的:(python,字典)