Python的dict/list排序查找

本文最后更新于2017年10月1日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

整理一下Python中和dict/list相关的排序、查找代码,方便以后查阅和使用。

正文:

参考解答:
Python中对dict的排序

Python中的’too many values to unpack’错误

Python中查找某个元素在list中的位置/下标

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3614.html

《Python的dict/list排序查找》上有3条评论

  1. Python中对dict的value是list类型的进行排序(根据list的内容、大小)
    https://codereview.stackexchange.com/questions/180005/sort-dictionary-by-increasing-length-of-its-values
    https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value

    # 根据 dict 的 key 大小进行排序
    In [87]: for k in sorted(result.items(), key=lambda x: x[0]):
    ...: print k
    ...:

    # 根据 dict 的 value 大小进行排序(字符串比较)
    # lambda 后面的 x 指代的是前面参数 result.items() 里面的一个元素,即 (k, v) ,所以 x[1] 指的是 dict 的value
    In [88]: for k in sorted(result.items(), key=lambda x: x[1]):
    ...: print k
    ...:

    # 当 dict 的 value 是 list 类型时,根据 list 元素的多少进行排序
    # lambda 后面的 x 指代的是前面参数 result.items() 里面的一个元素,即 (k, v) ,所以 x[1] 指的是 dict 的 value ,所以下面语句的含义是比较 value 的 len 大小(字符串比长度,数组比大小)
    In [89]: for k in sorted(result.items(), key=lambda x: len(x[1])):
    ...: print k
    ...:

    # 当 dict 的 value 是 list 类型时,先根据 list 元素的多少进行排序,再根据 list 进行排序
    # 在 sorted 函数的 key 参数那里的 lambda 是可以进行多级排序的,只要传一个 tuple 过去就行
    In [91]: for k in sorted(result.items(), key=lambda x: (len(x[1]), x[1]), reverse=True):
    ...: print k
    ...:

  2. Python中如何查找list中出现次数最多的元素
    https://stackoverflow.com/questions/1518522/find-the-most-common-element-in-a-list

    >>> most_common(['duck', 'duck', 'goose'])
    'duck'
    >>> most_common(['goose', 'duck', 'duck', 'goose'])
    'goose'

    # 方法一
    from itertools import groupby as g
    def most_common_oneliner(L):
    return max(g(sorted(L)), key=lambda(x, v):(len(list(v)),-L.index(x)))[0]

    # 方法二
    def most_common(lst):
    return max(set(lst), key=lst.count)

    #方法三
    from collections import Counter
    def most_common(lst):
    data = Counter(lst)
    return max(lst, key=data.get)

  3. Python中如何确定一个list的模式
    https://stackoverflow.com/questions/10797819/finding-the-mode-of-a-list

    即,给定一个list,调用某个函数返回该list中出现次数最多的元素。
    max(set(list_in), key=list_in.count)

    # Python 2.7及以上版本
    from collections import Counter
    data = Counter(your_list_in_here)
    data.most_common() # Returns all unique items and their counts
    data.most_common(1) # Returns the highest occurring item

发表评论

电子邮件地址不会被公开。 必填项已用*标注