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})

  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/valorchang/p/11289098.html
Copyright © 2011-2022 走看看