zoukankan      html  css  js  c++  java
  • 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)

             

  • 相关阅读:
    Atitit.Java exe bat  作为windows系统服务程序运行
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/8620022.html
Copyright © 2011-2022 走看看