python字典按照键和值进行排序

排序首先想到python的sorted()和sort()

sort 与 sorted 区别:
1.sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。通俗的说,就是sort没有返回值,sorted有返回值。

sorted 语法: sorted(iterable, key=None, reverse=False)

参数说明:

iterable – 可迭代对象。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

因此字典按照键和值进行排序了,也就是在sorted()中的参数key选择键或者值。

import random
testlist=[]
for i in range(20):
    testlist.append(random.randint(81,100))
print(testlist)
zi={
    
    }
for x in testlist:
    if x not in zi.keys():
        zi[x]=testlist.count(x)
print("zi:",zi)

# 按照键排序
ll1=sorted(zi.items(),key=lambda kv:(kv[0]))
print(ll1)
#按照值排序
ll2=sorted(zi.items(),key=lambda kv:(kv[1]))
print(ll2)

输出为:

[88, 97, 90, 88, 99, 95, 95, 95, 86, 93, 97, 90, 95, 98, 100, 86, 99, 90, 84, 84]
zi: {
    
    88: 2, 97: 2, 90: 3, 99: 2, 95: 4, 86: 2, 93: 1, 98: 1, 100: 1, 84: 2}
[(84, 2), (86, 2), (88, 2), (90, 3), (93, 1), (95, 4), (97, 2), (98, 1), (99, 2), (100, 1)]
[(93, 1), (98, 1), (100, 1), (88, 2), (97, 2), (99, 2), (86, 2), (84, 2), (90, 3), (95, 4)]

1.Python 字典 items() 函数以列表返回可遍历的(键, 值) 元组数组。
2.其中的lambda函数可以参考:python的lambda-map-reduce

字典排序列表

lis = [{
    
     "name" : "Taobao", "age" : 100},  
{
    
     "name" : "Runoob", "age" : 7 }, 
{
    
     "name" : "Google", "age" : 100 }, 
{
    
     "name" : "Wiki" , "age" : 200 }]

lname=sorted(lis,key=lambda kv:kv['name'])
print(lname)
lage=sorted(lis,key=lambda kv:kv['age'])
print(lage)

输出为:

[{
    
    'name': 'Google', 'age': 100}, {
    
    'name': 'Runoob', 'age': 7}, {
    
    'name': 'Taobao', 'age': 100}, {
    
    'name': 'Wiki', 'age': 200}]
[{
    
    'name': 'Runoob', 'age': 7}, {
    
    'name': 'Taobao', 'age': 100}, {
    
    'name': 'Google', 'age': 100}, {
    
    'name': 'Wiki', 'age': 200}]

猜你喜欢

转载自blog.csdn.net/liulanba/article/details/114384960
今日推荐