zoukankan      html  css  js  c++  java
  • Python实用黑科技——找出序列里面出现次数最多的元素

    需求:
    如何从一个序列中快速获取出现次数最多的元素。

    方法:
    利用collections.Counter类可以解决这个问题,特别是他的most_common()方法更是处理此问题的最快途径。比如,现在有一个单词的序列,你想快速获取哪个单词出现频率最高,就可以这么做:

    In [22]: words = ['look', 'into', 'my', 'eyes', 'look', 'into',
    ...: 'my', 'eyes', 'the', 'eye', 'the', 'eyes', 'not',
    ...: 'around', 'the', 'eyes', "don't", 'look', 'around',
    ...: 'the', 'eyes', 'look', 'into', 'my', 'eyes', "you're",
    ...: 'under'
    ...: ]

    In [23]: from collections import Counter
    In [24]: word_counts = Counter(words)
    In [25]: print(word_counts.most_common(3))
    [('eyes', 6), ('look', 4), ('the', 4)]

    事实上,Counter对象是一个元素和其数目对应关系所构成的字典, 例如:

    In [26]: word_counts['not']
    Out[26]: 1
    In [27]: word_counts['into']
    Out[27]: 3

    扩展:
    如果你想手动扩展单词数目,可以使用下面的方式:

    In [28]: more_words = ['why', 'are', 'you', 'not', 'looking', 'in',
    ...: 'my', 'eyes']
    In [29]: for word in more_words:
    ...: word_counts[word] += 1
    ...: # word_counts.update(more_words)
    In [30]: word_counts['eyes']
    Out[30]: 7

    Counter类还有一些类似于数学运算的方法,使用起来也是相当方便:

    In [31]: a = Counter(words)

    In [32]: b = Counter(more_words)

    In [33]: a
    Out[33]:
    Counter({'around': 2,
    "don't": 1,
    'eye': 1,
    'eyes': 6,
    'into': 3,
    'look': 4,
    'my': 3,
    'not': 1,
    'the': 4,
    'under': 1,
    "you're": 1})

    In [34]: b
    Out[34]:
    Counter({'are': 1,
    'eyes': 1,
    'in': 1,
    'looking': 1,
    'my': 1,
    'not': 1,
    'why': 1,
    'you': 1})

    In [35]: c = a + b

    In [36]: c
    Out[36]:
    Counter({'are': 1,
    'around': 2,
    "don't": 1,
    'eye': 1,
    'eyes': 7,
    'in': 1,
    'into': 3,
    'look': 4,
    'looking': 1,
    'my': 4,
    'not': 2,
    'the': 4,
    'under': 1,
    'why': 1,
    'you': 1,
    "you're": 1})

    In [37]: d = b - a

    In [38]: d
    Out[38]: Counter({'are': 1, 'in': 1, 'looking': 1, 'why': 1, 'you': 1})

  • 相关阅读:
    iOS-Core Text 入门
    Mac浏览器全屏设置
    Quartz 2D - 图形上下文(Graphics Contexts)
    Quartz 2D 概述
    Quartz 2D官方文档翻译(持续更新中)
    那些年,我们常掉进去的坑
    CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理 (转载)
    科大讯飞
    Object-C语言类的扩展
    科大讯飞语音识别
  • 原文地址:https://www.cnblogs.com/valorchang/p/11289098.html
Copyright © 2011-2022 走看看