• 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)

             

  • 相关阅读:
    梯度下降(Gradient Descent)
    Positioning-Based Photo Retrieval
    NTU Long-Term Positioning Dataset
    Pycharm导入tabula模块包
    MySQL学习笔记20
    MySQL学习笔记17-19
    Android studio 报错AAPT2 error
    MySQL学习笔记13-16
    MySQL学习笔记 8-12
    机器学习十大算法
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/8620022.html
Copyright © 2020-2023  润新知