python笔记4----字典

1、哈希:

输入任意长度,输出固定长度。

即判断是否哈希,即判断可不可变。

2、创建字典

(1)直接创建:dic={1:'a',2:'b',3:'c'}

(2)dict函数创建:  

list=[(1,'a'),(2,'b')]    
dic=dict(list1)  
#dic={1:'a',2:'b'}

list1=[1,2]
list2=['a','b']
dic1=dict(zip(list1,list2))
#dic1={1:'a',2:'b'},zip函数是将两个list映射对应的值

(3)fromkeys函数创建:(当给所有键赋同样的值可以用)

#建立一个空字典,调用它的fromkeys方法,有点多余
{}.fromkeys(['Niuyun','wangdachui','xiaohong'],3000)
#上面多余,可用dict调用该方法,dict是所用字典的类型
dict.fromkeys(['Niuyun','wangdachui','xiaohong'])
#{'Niuyun':None,'wangdachui':None,'xiaohong':None}

3、字典相关操作:假如dic是一个词典

(1)len(dic):返回键-值对的数量

(2)dic[k]:返回键k的值。推荐用dic.get(k),因为dic[k]中若k不存在,则会报错,dic.get(k)得到结果是None。

(3)del dic[k]:删除键为k的项。注意是项。如果在for k,v in dic.items()中删除【del dic[k]】会报错,因为在for中不能随意修改字典大小,故将可key变成列表,变量key。

如:

a = {'a':0,'b':1,'c':2}
keys = list(a.keys())
for k in keys:

    if k in a:

        if a[k] == 0:

            del a[k]

(4)dic.keys():输出所有的键

(5)dic.values():输出所有的值

dic.itervalues():输出所有值的一个迭代器,它没有len属性,与values()区别在此。values输出是一个列表,比较占内存,itervalues()输出是一个迭代器,占内存少。

(6)dic.items():相当于将字典变成列表:比如:

(7)dic.update(dic1):dic为原字典,dic1为更新字典,其中有修改和增加的人员,相当于将dic和dic1合并。

 (8)使用min和max函数去找字典值中的最大值和最小值,

        a,b=max(zip(dic.values(),dic.keys()))【此处是找dic值的最大值,并返回b为其对应的键值】

   a,b=max(zip(dic.keys(),dic.values()))  【此处是找dic键值的最大值,并返回a 为其对应的值。】

(9)对字典的值倒序排序:

  sorted(dic.items(),key=labmda item:item[1] ,reverse=True)

4、一个小例子:

将列表plist=[('AM','American','78.51'),('BA','Banana','184.76'),('CAT','categary','872')]的缩写项和数字项提取出来放入字典,即0和2项。

方法1:用zip方法

plist=[('AM','American','78.51'),('BA','Banana','184.76'),('CAT','categary','872')]
list1=[]
list2=[]
for i in range(len(plist)):
    list1.append(plist[i][0])
    list2.append(plist[i][2])
dic1=dict(zip(list1,list2))
print(dic1)

方法2:直接序列解包

plist=[('AM','American','78.51'),('BA','Banana','184.76'),('CAT','categary','872')]
dic2={}
for data in plist:
    dic2[data[0]]=data[2]
print(dic2)

         

原文地址:https://www.cnblogs.com/Lee-yl/p/8620022.html