• python 笔记6


    1、字典

    1)、定义:

        key—value键值对的数据集合

        可变的、无序的、key不重复

    2)、格式

        (1)、d=dict()或者d={}  

        (2)、dict(**kwargs)使用name=value对初始化一个字典

        (3)、dict(iterable,**kwarg) 使用可迭代对象或者name=value对构造字典,不过可迭代对象的元素必须是一个二元结果

            d=dict(((1,'a'),(2,'b')))    

        (4)、dict(mapping,**kwarg)使用一个字典构造另一个字典

            d={'a':10,'b':20,'c':None,'d':[1,2,3}}

        (5)、类方法dict.fromkeys(iterable,value)

            d=dict.fromkeys(range(5))

    3)、字典元素的访问

        (1)、d[key]:返回key对于的值value

              key不存在抛出KeyError异常

        (2)、get(key[,default]):返回key对应的值value

              key不存在返回缺省值,即default位置的值,如果没有设置就返回None

        (3)、setdefault(key[,default]):返回key对应的值value,

              key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None

    4)、字典增加和修改

        (1)、d[key]=value:将key对应的值修改为value;key不存在添加新的kv对

        (2)、update([other]):使用另一个字典的kv对更新本字典

            key不存在就添加,存在就覆盖已经存在的key对应的值

            就地修改 

            例如:

                d2.update(d3,red=1) #将d3这个字典中的元素和‘red’:1加入进d2,相当于混合加入

                d2.update({'red':3})  d.update((('red':3),))

    5)、字典的删除

        (1)、pop(key[,default])

              key存在,移除它,并返回它的value,不存在则返回给定的default

              default未设置,key不存在则抛出KeyError异常

        (2)、popitem()

              移除并返回一个任意的键值对;字典为空,抛出KeyError异常

        (3)、clear()  清空字典

    6)、defaultdict

    collections.defaultdict([default_factory[,...]])

      第一个参数是default_factory,缺省是None,它提供一个初始化函数。当key不存在的时候,会调用这个工厂函数来生成key对应的value

    例:

      

    from collections import defaultdict
    d1={}
    d2=defaultdict(list)
    for k in "wang":
        for v in range(5):
            if k not in d1.keys():
                d1[k]=[]
            d1[k].append(v)
    print(d1)
    
    for k in 'wen':
        for v in range(3):
            d2[k].append(v)
    print(d2)

    7)、OrderedDict

      collections.OrderedDict([items])

      key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序

     1 from collections import OrderedDict
     2 import random
     3 
     4 d={'bana':2,'apple':4,'orange':1,'pear':6}
     5 print(d)
     6 keys=list(d.keys())
     7 random.shuffle(keys)
     8 print(keys)
     9 oi=OrderedDict()
    10 for key in keys:
    11     oi[key]=d[key]
    12 print(oi)
    13 print(oi.keys())

    #字典的练习:

    1、用户输入一个数字,打印每一位数字及其重复次数:

    from collections import OrderedDict
    x=input('>>>')
    od=OrderedDict()  #OrderedDict()可以当作生成一个特殊的字典,即改字典的输出顺序可以指定。
    
    for i in x:
        od.setdefault(i,0)  #用setdefault给od赋值,没有value的赋值为0
        od[i]+=1  #每一个value加1
    else: 
        for k in x:
            print("num={},count={}".format(k,od[k]))
    print(od)
    
    
    结果:
    >>>76917
    num=7,count=2
    num=6,count=1
    num=9,count=1
    num=1,count=1
    num=7,count=2
    OrderedDict([('7', 2), ('6', 1), ('9', 1), ('1', 1)])

    2、python数字重复的统计,随机产生100个整数,升序输出所有不同数字及其重复的次数

     1 from collections import OrderedDict
     2 import  random
     3 od=OrderedDict()
     4 lst=sorted([random.randint(-1000,1000) for i in range(100)])
     5 print(lst)
     6 
     7 for i in lst:
     8     od.setdefault(i,0)
     9     od[i]+=1
    10 print(od)
  • 相关阅读:
    OJ推荐【转】
    Eclipse插件推荐:UCDetector: Unnecessary Code Detector
    Android工程目录及其作用简介
    Source not found The JAR file …has no source attachment.
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Microsoft Visual C++ Runtime error解决方法
    Windows程序设计之Hello,Windows 98程序的声音调试记录
    没有谁是躺着成为谁的【转载】
    下一个7年,我是谁?【转载】
    UEditor编辑器使用教程 百度经验
  • 原文地址:https://www.cnblogs.com/mapone/p/12049328.html
Copyright © 2020-2023  润新知