Python里面有3大数据结构:列表,字典和集合.字典是常用的数据结构,里面有一些重要的技巧用法,我把这些都整理到一起,熟练掌握这些技巧之后,对自己的功力大有帮助.
来自微信公众号:菜鸟学python
这是菜鸟学python的第19篇原创文章
阅读本文大概需要8分钟
1.字典的排序:
用万金油sorted()函数
-
举一个简单的例子
my_dict={"cc":100,"aa":200,"bb":10}
print(sorted(my_dict.iteritems(),key=lambda x:x[0]))#表示按照key排序
>>>[('aa', 200), ('bb', 10), ('cc', 100)]
print(sorted(my_dict.iteritems(),key=lambda x:x[1]))#表示按照value排序
>>>[('bb', 10), ('cc', 100), ('aa', 200)]
注意原始的my_dict本身顺序并没有变(不信你可以print看看),排序是通过sorted()返回了一个新的字典
-
另外一种做法,因为字典是无序,若你一开始设计的时候就希望这个数据结构,按照的添加的顺序进行有序排列(比如读取CSV文件),那么我们就是利用collection模块里面的OrderedDict()处理:
from collections import OrderedDict
orderDict=OrderedDict()
orderDict['a']=1
orderDict['b']=2
orderDict['c']=3
print(orderDict)
>>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])
-
对比一下,若是普通的dict是乱序的,若不用OrderedDict()
orderDict=dict()
orderDict['a']=1
orderDict['b']=2
orderDict['c']=3
print(orderDict)
>>>{'a': 1, 'c': 3, 'b': 2}
最后要提醒一下:OrderedDict()虽然是好东西,但是它内部维护了一个双向链表,若数据量很大的话,会非常消耗内存.
2.字典的取值
字典中取值大家很容易想到用dict[key],这个有什么难的,确实一般取值是这样的,但是你有没有想过若你取的值不存在,就会发生异常,风险很大.(良好的代码,一定是要考虑健壮性,切记)
剩下的详细见:
http://mp.weixin.qq.com/s?__biz=MzIxNjM4NDE2MA==&mid=2247483758&idx=1&sn=1a6c96dfb1e1e3e8613e45f292da0031&chksm=978896a1a0ff1fb74f90c418014abe20be52a07b5e3bf86deea30a282bbca26a69b3a03a62d6&scene=18#wechat_redirect