蓝桥Python组标准库collections(2)

collections

三、defaultdict: 有默认值的字典

在字典中获取一个key有两种方法
第一种get
第二种通过[]获取.
使用dict时,如果引用的key不存在,就会抛出KeyError。
如果希望key不存在时,返回一个默认值,就可以用defaultdict。

from collections import defaultdict

d = defaultdict(int)
print(d['a'])
d = defaultdict(list)
print(d['a'])
d = defaultdict(set)
print(d['a'])
d = defaultdict(dict)
print(d['a'])

print("---------------------------")

arr = [('yellow', 1), ('blue', 3), ('gray', 5), ('black', 7),('red', 9)]
brr = defaultdict(int)
for n, m in arr:
    brr[n] = m
print(brr)
print(brr['gray'])
print(brr['6'])

print("---------------------------")

arr = [('yellow', 1), ('blue', 3), ('yellow', 5), ('blue', 7),('red', 9)]
brr = defaultdict(list)
for n, m in arr:
    brr[n].append(m)
print(brr)
print(brr['yellow'])
print(brr['6'])

print("-----------------------------")

arr = [('yellow', 1), ('blue', 3), ('yellow', 5), ('blue', 7),('red', 9)]
brr = {}
for n, m in arr:
    if n not in brr.keys():
        brr[n] = []
    brr[n].append(m)
print(brr)
#print(brr['6'])

输出

0
[]
set()
{}
---------------------------
defaultdict(<class 'int'>, {'yellow': 1, 'blue': 3, 'gray': 5, 'black': 7, 'red': 9})
5
0
---------------------------
defaultdict(<class 'list'>, {'yellow': [1, 5], 'blue': [3, 7], 'red': [9]})
[1, 5]
[]
-----------------------------
{'yellow': [1, 5], 'blue': [3, 7], 'red': [9]}

四、OrderedDict: 有序字典

key按照插入的顺序排序,与字典基本一致
popitem()函数python3.7以上版本删除最后一个元素返回

OrderedDict: 可以指定参数last,last默认为True,删除最后一个。False删除第一个。

from collections import OrderedDict

arr = [('red', 1), ('blue', 3), ('gray', 5)]
brr = OrderedDict(arr)
print(brr)

while len(brr) != 0:
    print("删除的元素: ",brr.popitem())
    print("删除后的的brr: ", brr)

print("------------------------")

arr = [('red', 1), ('blue', 3), ('gray', 5)]
brr = OrderedDict(arr)
print(brr)

while len(brr) != 0:
    print("删除的元素: ",brr.popitem(False))
    print("删除后的的brr: ", brr)

print("------------------------")

arr = [('red', 1), ('blue', 3), ('gray', 5)]
brr = OrderedDict(arr)
print(brr)

while len(brr) != 0:
    print("删除的元素: ",brr.popitem(True))
    print("删除后的的brr: ", brr)

print("----------------------")

arr = [('red', 1), ('blue', 3), ('gray', 5)]
brr = dict(arr)
print(brr)

while len(brr) != 0:
    print("删除的元素: ",brr.popitem())
    print("删除后的的brr: ", brr)

输出

OrderedDict([('red', 1), ('blue', 3), ('gray', 5)])
删除的元素:  ('gray', 5)
删除后的的brr:  OrderedDict([('red', 1), ('blue', 3)])
删除的元素:  ('blue', 3)
删除后的的brr:  OrderedDict([('red', 1)])
删除的元素:  ('red', 1)
删除后的的brr:  OrderedDict()
------------------------
OrderedDict([('red', 1), ('blue', 3), ('gray', 5)])
删除的元素:  ('red', 1)
删除后的的brr:  OrderedDict([('blue', 3), ('gray', 5)])
删除的元素:  ('blue', 3)
删除后的的brr:  OrderedDict([('gray', 5)])
删除的元素:  ('gray', 5)
删除后的的brr:  OrderedDict()
------------------------
OrderedDict([('red', 1), ('blue', 3), ('gray', 5)])
删除的元素:  ('gray', 5)
删除后的的brr:  OrderedDict([('red', 1), ('blue', 3)])
删除的元素:  ('blue', 3)
删除后的的brr:  OrderedDict([('red', 1)])
删除的元素:  ('red', 1)
删除后的的brr:  OrderedDict()
----------------------
{'red': 1, 'blue': 3, 'gray': 5}
删除的元素:  ('gray', 5)
删除后的的brr:  {'red': 1, 'blue': 3}
删除的元素:  ('blue', 3)
删除后的的brr:  {'red': 1}
删除的元素:  ('red', 1)
删除后的的brr:  {}

move_to_end(key, last=True)函数

from collections import OrderedDict

arr = [('red', 1), ('blue', 3), ('gray', 5)]
brr = OrderedDict(arr)
print(brr)

brr.move_to_end('red')
print("将red移动到右端", brr)

brr.move_to_end('gray',False)
print("将gray移动到左端", brr)

brr.move_to_end('blue',True)
print("将blue移动到右端", brr)

输出

OrderedDict([('red', 1), ('blue', 3), ('gray', 5)])
将red移动到右端 OrderedDict([('blue', 3), ('gray', 5), ('red', 1)])
将gray移动到左端 OrderedDict([('gray', 5), ('blue', 3), ('red', 1)])
将blue移动到右端 OrderedDict([('gray', 5), ('red', 1), ('blue', 3)])
  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023蓝桥Python B是一个Python编程竞赛别,属于蓝桥杯全国软件和信息技术专业人才大赛。蓝桥杯是中国最有影响力的IT竞赛之一,旨在发现和培养软件和信息技术领域的优秀人才。2023年将举办蓝桥杯竞赛中的Python B,意味着这个别将使用Python编程语言进行竞赛。 Python作为一种简单易学的编程语言,拥有较强的可读性和灵活性。它在数据分析、人工智能、Web开发等领域得到广泛应用。Python B的参赛选手有机会展示自己在Python编程方面的技术实力和创造力。 对于2023蓝桥Python B的参赛选手来说,要想在竞赛中取得好成绩,首先需要扎实的Python编程基础。熟悉Python的基本语法、掌握常用的库和模块,是竞赛成功的基石。 其次,参赛选手还需要具备良好的逻辑思维和问题解决能力。竞赛中可能遇到各种难题,需要分析问题、设计算法,并用Python代码实现解决方案。 此外,团队合作也是成功的关键。选手需要与队友密切合作,共同解决问题、讨论和优化代码。团队的相互支持和协作能够提高整个团队的竞赛水平和效率。 总的来说,2023蓝桥Python B是一个为期一年的Python编程竞赛,提供了一个展示个人实力和创意的舞台。参赛选手需要具备扎实的编程基础、良好的逻辑思维和问题解决能力,并与队友紧密合作,共同实现竞赛目标。参与这个竞赛可以提高个人的编程水平、锻炼团队合作能力,并有机会获得诸如荣誉证书、奖金等奖励。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值