zoukankan      html  css  js  c++  java
  • collections

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2018/6/14 16:17
    # @File    : collections1_demo1.py


    from collections import Counter
    import re

    # counter
    '''
    Counter 是一个有助于 hashable 对象计数的 dict 子类。
    它是一个无序的集合,其中 hashable 对象的元素存储为字典的键,它们的计数存储为字典的值,计数可以为任意整数,包括零和负数。
    '''
    path = r'D:pytharmjichuyufamodel3practise3db1.txt'  # 文件路径
    with open(path, 'r', encoding='utf-8') as f:
        words = re.findall('w+', f.read().lower())
        print(Counter(words).most_common(10))
        #  [('b', 1502), ('where', 244), ('infoshar_1589255412', 235), ('uuid', 235),
        # ('update', 232), ('reg_addr_code', 232), ('set', 231), ('province', 231), ('cty', 231), ('county', 231)]

    # Counter 对象有一个叫做 elements() 的方法,其返回的序列中,依照计数重复元素相同次数,元素顺序是无序的
    c = Counter(a=4, b=2, c=0, d=-2)
    print('list(c.elements())----------------', list(c.elements()))
    # list(c.elements())---------------- ['a', 'a', 'a', 'a', 'b', 'b']
    # most_common() 方法返回最常见的元素及其计数,顺序为最常见到最少。
    li_common = Counter('abracadabra').most_common(3)
    print('li_common----------------------', li_common)
    # li_common---------------------- [('a', 5), ('b', 2), ('r', 2)]



    # defaultdic
    '''
    defaultdict 是内建 dict 类的子类,它覆写了一个方法并添加了一个可写的实例变量。其余功能与字典相同。

    defaultdict() 第一个参数提供了 default_factory 属性的初始值,默认值为 None,
    default_factory 属性值将作为字典的默认数据类型。所有剩余的参数与字典的构造方法相同,包括关键字参数。

    同样的功能使用 defaultdict 比使用 dict.setdefault 方法快
    '''
    from collections import defaultdict
    s_dic = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
    d = defaultdict(list)
    for k, v in s_dic:
        d[k].append(v)
    s_res = d.items()
    print(s_res, type(s_res))  # dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])]) <class 'dict_items'>
    for i in s_res:
        print(i, type(i))  # ('yellow', [1, 3]) <class 'tuple'>


    # namedtuple
    # 命名元组有助于对元组每个位置赋予意义,并且让我们的代码有更好的可读性和自文档性。
    # 你可以在任何使用元组地方使用命名元组。在例子中我们会创建一个命名元组以展示为元组每个位置保存信息
    from collections import namedtuple
    Point = namedtuple('Point', ['x', 'y'])  # 定义命名元组
    p = Point(10, y=20)  # 创建一个对象
    print('p,type(p)------>', p, type(p))  # p------> Point(x=10, y=20)<class '__main__.Point'>
    print(p.x + p.y)  # 30

    s_nap = p[0] + p[1]  # 像普通元组那样访问元素
    print(s_nap)  # 30

    x, y = p     # 元组拆封
    print('x:%s,y:%s' % (x, y))  # x:10,y:20


  • 相关阅读:
    【项目】项目17
    【项目】项目16
    【项目】项目15
    【项目】项目14
    【项目】项目13
    【项目】项目12
    【项目】项目11
    【项目】项目10
    【项目】项目9
    【项目】项目8
  • 原文地址:https://www.cnblogs.com/fmgao-technology/p/9185876.html
Copyright © 2011-2022 走看看