我与python3擦肩而过(一)—— Dict与collections.OrderredDict邂逅

  最近一直在撸Python Data Analysis上的代码(书是基于Python2的,小白我用的python3),所以我下的时候多少有些改动。

  这是9.4中的nltk词频分析关于Dict_key的问题。

源码是这样的:

运行报错:

  查了一下subscriptable,这个链接解释的还是比较清楚的。简单讲就是说,dict_key不再和list,tuple等一样包含可脚本化的对象。

之后尝试几下均告失败,想着跳过这里,但后面词频分析用的也不少,只好硬着头皮上啦!Google半天,发现了(ps:stackoverflow还是相当不错的)。

也就是加个list。不过,这样的话,要取出词频最高的item的value容易,但对应的key却应为打乱了顺序而无法找到。于是,继续寻找解决的方案。感谢群里面大神相助,得知有个固定字典顺序的方法——collections.OrderredDict。具体使用可以参考这篇博文

  有了这个,就开始工作啦,工作目标——找出乱序字典{‘关键字’:‘次数’}中次数最多的几个词及其出现次数。

于是,就有了它:

运行结果:

  总算是成功了。。。不过总感觉好像走了弯路——不过至少学会了collections.OrderresDict——希望有哪位大侠看到能给出更好的解决方案。

至于Python Data Analysis,看完有时间也打算在这里总结一下。

时间: 2024-10-24 04:57:14

我与python3擦肩而过(一)—— Dict与collections.OrderredDict邂逅的相关文章

Python3 内建模块 datetime/collections/base64/struct

datetime 我们先看如何获取当前日期和时间: >>> from datetime import datetime >>> now = datetime.now() # 获取当前datetime >>> print(now) 2015-05-18 16:28:07.198690 >>> print(type(now)) <class 'datetime.datetime'> 注意到datetime是模块,datetim

Python3中对Dict的内存优化

众所周知,python3.6这个版本对dict的实现是做了较大优化的,特别是在内存使用率方面,因此我觉得有必要研究一下最新的dict的源码实现. 前后断断续续看了大概一周多一点,主要在研究dict和创建实例对象那部分的代码,在此将所得记录下来. 值得一提的事,新版的dict使用的算法还是一样的,比如说hash值计算.冲突解决策略(open addressing)等.因此这一部分也不是我关注的重点,我关注的主要是在新的dict如何降低内存使用这方面. btw,本文的分析是基于python的3.6.

python3 两层dict字典转置

python3; 两层字典 dict =(type, dict2) dict2 = (k_value, index) dictss = { 10: {3: 1, 4: 2, 5: 3, 6: 4, 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: 12, 15: 13, 16: 14, 17: 15, }, 20: {3: 16, 4: 17, 5: 18, 6: 19, 7: 20, 8: 21, 9: 22, 10: 23, 11: 24

我与python3擦肩而过(三)—— 我去。。又是编码问题——urllib.parse.unquote

记得初学python时就学的爬虫,经常遇到编码问题(其实在python3里面编码问题已经很少了...),用requests库就挺方便解决这些问题的.近来有共同学习python的程序员写了个电子书网站,想要相关的爬虫,于是,我去试了试...当然,第一步就遇到“编码问题”,这次requests就用不上啦. 观察发现,小说网站搜索网页之后,跳转的网址形如:http://so.biquge.la/cse/search?s=7138806708853866527&q=%CD%EA%C3%C0%CA%C0%

Python学习笔记 - dict和set

dict #!/usr/bin/env python3 # -*- coding: utf-8 -*- #dict >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95 >>> d['Adam'] = 67 >>> d['Adam'] 67 >>> d['Jack'] = 90 >>> d['Jack'] 90 >

7th

..安软件的时候故障重启,之前写的丢失了,不补了,续着写. dict.iter* 方法iteritems(),iterkeys(),itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子(iterator),而不是一个列表. 这里返回的iterator不可以直接使用,我们可以通过list()也可以通过for来访问其中的元素. dict.setdefault(key, default = None)和方法set()类似,但如果字典中不存在key键,由dict[key]=de

Fluent_Python_Section2数据类型,03-dict-set,字典和集合

字典和集合 dict和set都基于hash table实现 1. 大纲: 常见的字典方法 如何处理查找不到的键 标准库中dict类型的变种 set和fronzenset类型 Hash table的工作原理 Hash table带来的潜在影响 字典dict 2. 泛映射类型 在collections.abc中,有Mapping和MutableMapping,两个抽象基类,主要作用是作为形式化文档,定义了映射类型的基本API. my_dict = {} #判定数据是不是广义上的映射类型 #不用typ

python 13---17

第十三章 一. 匿名函数 匿名函数 lambda,也叫一句话函数. 现在有一个需求:你们写一个函数,此函数接收两个int参数,返回和值. def func(a,b): return a+b print(func(3,4)) 那么接下来我们用匿名函数完成上面的需求: func = lambda a,b: a+b print(func(3, 4)) # 7 我们分析一下上面的代码: 语法: 函数名 = lambda 参数:返回值 1)此函数不是没有名字,他是有名字的,他的名字就叫做lambda 2)

OrdereDict

od = OrderedDict()  # 按照key进入的顺序 od['c']='c' od['b']='b' od['e']='e' print(od) print(od.keys()) od.move_to_end('e',last=False)  # last控制移到左端还是右端 print(od) od.popitem(last=True)  # last是控制移除最左端还是最有段 print(od) od.pop('e')  # 有字典的方法 print(od) 注意一点,在Pyth