美文网首页
容器(collcetions)

容器(collcetions)

作者: 秋山琳 | 来源:发表于2018-12-07 10:30 被阅读0次

    Python附带⼀个模块, 它包含许多容器数据类型, 名字叫作collections。

    1、defaultdict

    与dict类型不同, 你不需要检查key是否存在, 所以我们能这样做:

    from collections import defaultdict

    colours = (

        ('Yasoob', 'Yellow'),

        ('Ali', 'Blue'),

        ('Arham', 'Green'),

        ('Ali', 'Black'),

        ('Yasoob', 'Red'),

        ('Ahmed', 'Silver'),

    favourite_colours = defaultdict(list)

    for name, colour in colours:

        favourite_colours[name].append(colour)

    print(favourite_colours)

    另⼀种重要的是例⼦就是: 当你在⼀个字典中对⼀个键进⾏嵌套赋值时, 如果这个键不存在, 会触发keyError异常。 defaultdict允许我们⽤⼀个聪明的⽅式绕过这个问题。

    问题:

    some_dict = {}

    some_dict['colours']['favourite'] = "yellow"

    ## 异常输出: KeyError: 'colours'

    解决⽅案:

    from collections import defaultdict

    tree = lambda: defaultdict(tree)

    some_dict = tree()

    some_dict['colours']['favourite'] = "yellow"

    2、Counter

    Counter是⼀个计数器, 它可以帮助我们针对某项数据进⾏计数。 ⽐如它可以⽤来计算每个⼈喜欢多少种颜⾊:

    from collections import Counter

    colours = (

        ('Yasoob', 'Yellow'),

        ('Ali', 'Blue'),

        ('Arham', 'Green'),

        ('Ali', 'Black'),

        ('Yasoob', 'Red'),

        ('Ahmed', 'Silver'),

    favs = Counter(name for name, colour in colours)

    print(favs)

    3、deque

    deque提供了⼀个双端队列, 你可以从头/尾两端添加或删除元素。

    它的⽤法就像python的list, 并且提供了类似的⽅法, 例如:

    from collections import deque

    d = deque(range(5))

    print(len(d),d[0],d[-1])

    d.append(6)  #插入

    d.pop()  #删除

    d.popleft()  #从左侧删除

    d.extend([6,7,8])  #拓展队列

    d.extendleft([0])  #从左侧拓展

    我们也可以限制这个列表的⼤⼩, 当超出你设定的限制时, 数据会从对队列另⼀端被挤出去(pop)。

    最好的解释是给出⼀个例⼦:

    d = deque(maxlen=30)

    现在当你插⼊30条数据时,再次插入,最左边⼀端的数据将从队列中删除。

    相关文章

      网友评论

          本文标题:容器(collcetions)

          本文链接:https://www.haomeiwen.com/subject/elfacqtx.html