Python字典里的5个黑魔法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值