这篇文章主要为大家展示了“Python如何通过公共键对不同字典进行排序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python如何通过公共键对不同字典进行排序”这篇文章吧。
利用 operator 模块中的 itemgetter 函数对这类结构进行排序。
rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004} ]
根据所有字典中共有的字段进行排序,字段可以是字典的键名称、用数字表示的列表元素或是任何可以传给对象的 __getitem__() 方法的值。
如果传多个标记给 itemgetter(),那么它产生的可调用对象将返回以个包含所有元素在内的元组,然后 sorted() 将根据对元组的排序结果来排序输出的结果。
from operator import itemgetter rows_by_fname = sorted(rows, key=itemgetter('fname')) rows_by_uid = sorted(rows, key=itemgetter('uid')) print(rows_by_fname) # [{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}, # {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}] print(rows_by_uid) # [{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}, # {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}, # {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}]
当 itemgetter() 函数接受多个键时
rows_by_lfname = sorted(rows, key=itemgetter('lname', 'fname')) print(rows_by_lfname) # [{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}, # {'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}]
同样 itemgetter() 也适用于 min() 和 max() 函数
>>> min(rows, key=itemgetter('uid')) {'fname': 'John', 'lname': 'Cleese', 'uid': 1001} >>> max(rows, key=itemgetter('uid')) {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
以上是“Python如何通过公共键对不同字典进行排序”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。