python collection模块中几种数据结构(Counter、OrderedDict、namedtup)


collection模块中有几种数据结构我们可能用得到。

Counter是字典的子类,负责计数的一个字典,支持 + 加法 - 减法 & 求公共元素 | 求并集

 

print('Counter类型的应用')
c = Counter("dengjingdong")
#c = Counter({'n': 3, 'g': 3, 'd': 2, 'i': 1, 'o': 1, 'e': 1, 'j': 1})
print("原始数据:",c)
print("最多的两个元素:",c.most_common(2))#输出数量最多的元素
print("d的个数:",c['d'])#输出d的个数
print(c.values())#输出字典的value列表
print(sum(c.values()))#输出总字符数
print(sorted(c.elements()))#将字典中的数据,按字典序排序
print('\n\n')
"""
#删除所有d元素
del c['d'] 
b = Counter("dengxiaoxiao")
#通过subtract函数删除元素,元素个数可以变成负数。
c.subtract(b) 
"""

"""
可以添加数据
b = Counter("qinghuabeida")
c.update(b)
"""
OrderedDict类型是一个有序的字典,它其实就是比普通字典多了一个顺序。

 

 

print('OrderedDict类型的应用')
dic = {}
dic['a'] = 'A'
dic['b'] = 'B'
dic['c'] = 'C'
odic = OrderedDict()
odic['a'] = 'A'
odic['b'] = 'B'
odic['c'] = 'C'
print('无序字典:',dic)
print('有序字典:',odic)
print('\n\n')

namedtup类型,一个类似于字典的元组,可以转化为字典

 

 

print('namedtup类型的应用')
deng = namedtuple('deng',['x','y'])
i = deng(x = 11,y = 12)
print('i的值为:', i )
print('将两个值相加:',i[0]+i[1])
print('用属性的方式相加:',i.x+i.y)
m,n = i
print('类似元组的赋值:',m,n)
d = i._asdict()
print('转化为一个字典:',d)



 

评论关闭