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)
posted @ 2019-12-16 15:23  二十四长夜明  阅读(176)  评论(0编辑  收藏  举报