【编程经验】Python之collections模块

collections模块是一个不用不知道,一用就上瘾的模块。因为它提供了几种非常方便的数据结构和方法,在有些情况下特别好用。今天给大家总结一下其中的OrderDict和Counter两个方法,在平时我经常用的方法,希望你也能喜欢它。然后还有比如deque,namedtuple,defaultdict等也是很有的方法,了解了以后重点是熟练的使用,灵活的应用到你的具体任务中,是需要掌握的。

1. OrderDict

# Example 1

dict_1 =dict()

dict_1['A'] ="I love machine learning".split(" ")

dict_1['B'] ="I love life too".split(" ")

dict_1['C'] ="which you like and which you like".split(" ")

print("先输出字典:{}".format(dict_1))

forx,yindict_1.items():

print("然后遍历字典:{}".format((x,y)))

print("dict_1 的类型: {}".format(type(dict_1)))

"""

先输出字典:{'B': ['I', 'love', 'life', 'too'], 'C': ['which', 'you', 'like', 'and', 'which', 'you', 'like'], 'A': ['I', 'love', 'machine', 'learning']}

然后遍历字典:('B', ['I', 'love', 'life', 'too'])

然后遍历字典:('C', ['which', 'you', 'like', 'and', 'which', 'you', 'like'])

然后遍历字典:('A', ['I', 'love', 'machine', 'learning'])

dict_1 的类型:

"""

多次执行上面这个程序,你会发现每次输出的顺序都是不一样的,这就是字典的无序性。

fromcollectionsimportOrderedDict

dict_2 = OrderedDict()

dict_2['A'] =list("machine")

dict_2['B'] =list("learning")

dict_2['C'] =list("math")

print("先输出字典:{}".format(dict_2))

fork,vindict_2.items():

print("然后遍历字典:{}".format((k,v)))

print("dict_2 的类型: {}".format(type(dict_2)))

"""

先输出字典:OrderedDict([('A', ['m', 'a', 'c', 'h', 'i', 'n', 'e']), ('B', ['l', 'e', 'a', 'r', 'n', 'i', 'n', 'g']), ('C', ['m', 'a', 't', 'h'])])

然后遍历字典:('A', ['m', 'a', 'c', 'h', 'i', 'n', 'e'])

然后遍历字典:('B', ['l', 'e', 'a', 'r', 'n', 'i', 'n', 'g'])

然后遍历字典:('C', ['m', 'a', 't', 'h'])

dict_2 的类型:

"""

多次执行上面这个程序,你会发现每次输出的key都是按照A, B, C顺序输出的。

2. Counter

Counter 是一个统计方法,可以统计频率,比如词频等。看个栗子

然后举个词频统计的小栗子

词频统计就是对于一段文本来说,首先做分词,分词之后统计每个词语出现的次数。今天用jieba分词来做一下,句子摘自朱自清的《荷塘月色》。

直接上代码

importjieba

test_str ="路上只我一个人,背着手踱着。这一片天地好像是我的;我也像超出了平常的自己,"\

"到了另一个世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这"\

"苍茫的月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,"\

",现 在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。"

test_str_cut = jieba.lcut(test_str)

word_freq = Counter(test_str_cut)

forw,finword_freq.most_common(10):

print(w,f)

"""

的 7

我 5

这 4

爱 4

了 3

也 3

一个 3

都 3

独处 2

"""

当然这里还可以去掉一些停用词等等操作。多练练就好了,都不难的,加油。

好,今天就到这里了~

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171209G0R0WP00?refer=cp_1026

扫码关注云+社区