美文网首页
python3字典排序

python3字典排序

作者: Yihulee | 来源:发表于2016-12-30 19:52 被阅读838次

python3 字典排序

说实话,对字典进行排序,这个说法本身就有问题,实际上,你无法对操纵字典说,字典,在你的底层实现里,你就得按照我指定的顺序来排列,如果这样的话,字典就丧失了它的速度优势,它也不是一个字典了.

好了,废话不多说,我这里稍微记录一下我的做法吧.

python2里面原来是有dict.iteritems这样一个函数的,但是在python3里面给消除掉了,dict.itemitems实际返回的是一个list类型的对象,对象里面全部是tuple元素,每个tuple都有两个元素,一个是key,一个是value.

python2时代的做法是这么来排序的:

>> dic
{'a':3 , 'b':2 , 'c': 1}
>> sorted(dic.iteritems(), key=lambda x:x[0], reverse=True) # 按照第0个元素降序排列
[('c', 1), ('b', 2), ('a', 3)]
>> sorted(dic.iteritems(), key=lambda x:x[0], reverse=False) # 按照第0个元素升序排列
[('a', 3), ('b', 2), ('c', 1)]
>> sorted(dic.iteritems(), key=lambda x:x[1], reverse=True) # 按照第1个元素降序排列
[('a', 3), ('b', 2), ('c', 1)]
>> sorted(dic.iteritems(), key=lambda x:x[1], reverse=False) # 按照第1个元素降序排列
[('c', 1), ('b', 2), ('a', 3)]

既然iteritems()函数取消了,我们构建一个类似的函数即可.

def dict2list(dic:dict):
    ''' 将字典转化为列表 '''
    keys = dic.keys()
    vals = dic.values()
    lst = [(key, val) for key, val in zip(keys, vals)]
    return lst

以后在python3里面要对字典排个序什么的,也很简单:

>> dic
{'a':3 , 'b':2 , 'c': 1}
>> sorted(dict2list(dic), key=lambda x:x[0], reverse=True) # 按照第0个元素降序排列
[('c', 1), ('b', 2), ('a', 3)]
>> sorted(dict2list(dic), key=lambda x:x[0], reverse=False) # 按照第0个元素升序排列
[('a', 3), ('b', 2), ('c', 1)]
>> sorted(dict2list(dic), key=lambda x:x[1], reverse=True) # 按照第1个元素降序排列
[('a', 3), ('b', 2), ('c', 1)]
>> sorted(dict2list(dic), key=lambda x:x[1], reverse=False) # 按照第1个元素降序排列
[('c', 1), ('b', 2), ('a', 3)]

至于效率,你都用python了,还扯什么效率呢.

当然,也请不要奢望说,返回一个排序后的字典,前面已经讲了,真的没有意义,你是在追求顺序的字典的话,可以使用有序字典,python里面有这样的包.

相关文章

  • python3字典排序

    python3 字典排序 说实话,对字典进行排序,这个说法本身就有问题,实际上,你无法对操纵字典说,字典,在你的底...

  • Python 字典排序

    Python 字典排序 《Python3 CookBook》[https://python3-cookbook.r...

  • python2和python3对字典进行排序的区别

    python2 python2中,对于字典的排序与python3还真不一样; 定义一个字典 a = {'a':'1...

  • iOS 各种排序

    数组排序 数组中字典排序 数组中字典按照某个value排序 排序方法

  • Python dict排序

    sorted 函数按key值对字典排序 sorted 函数按value值对字典排序 字典列表排序

  • python合并字典

    python3和合并字典

  • lambda

    针对字典进行排序 针对数组,其每个元素为字典,按照字典的某个key进行排序

  • iOS 给参数用ascll排序

    /** 对字典(Key-Value)排序@param dict 要排序的字典*/+ (NSMutableDicti...

  • OC数组大小排序算法

    1、要排序的数组如下,数字里面是字典,字典有两对键值对,数组需要按照字典里temp大小进行排序。 2、排序算法如下...

  • python dict字典排序

    Python的sorted函数可以对字典的key排序,可以对字典的value排序。 1.sorted函数对字典的k...

网友评论

      本文标题:python3字典排序

      本文链接:https://www.haomeiwen.com/subject/mrzmvttx.html