在python中对列表进行排序是使用很频繁的操作,一般采用sorted函数或自带的成员函数sort就可以搞定。但是,sorted函数本身功能非常强大,可以对字符串长度、字典键值进行排序。使用下面的代码,可以更进一步的学习掌握。

# 对列表进行排序(字符串采用字母顺序排序)
fruits = ["apple", "banana", "cherry", "date"]
result = sorted(fruits)
print(result)  # 输出 ['apple', 'banana', 'cherry', 'date']

# 根据字符串长度进行排序
result = sorted(fruits, key=lambda x: len(x))
print(result)  # 输出 ['date', 'apple', 'banana', 'cherry']

# 降序排序
result = sorted(fruits, reverse=True)
print(result)  # 输出 ['date', 'cherry', 'banana', 'apple']
# 根据字符串长度进行排序
fruits = ["apple", "banana", "cherry", "date"]
result = sorted(fruits, key=lambda x: len(x))
print(result)  # 输出 ['date', 'apple', 'banana', 'cherry']

#根据字典值大小排序(python3.7以后保持了插入顺序)
scoreDict = {
    '张三': 33,
    '李四': 36,
    '王五': 74,
    '赵六': 56,
    '李白': 88,
    '王维': 98,
    '杜甫': 100,
    '王昌龄': 89,
    '王之涣': 97,
    '王羲之': 93
}
print(scoreDict)

#由于items输出时是元祖对象('张三',33),因此 x[1]就能取到成绩值,x[0]取键
scoreDictSorted = sorted(scoreDict.items(), key=lambda x:x[1], reverse=True)
print(scoreDict.items())
print(scoreDictSorted)

#利用emuterate输出序号,start参数可以指定开始序号
for index, (name, score) in enumerate(scoreDictSorted, start=1):
    print(f'第{index}名:{name}\t成绩:{score}')

#python3.7以后保持了插入顺序
d=dict(scoreDictSorted)
print(d)

结果:

['apple', 'banana', 'cherry', 'date']
['date', 'apple', 'banana', 'cherry']
['date', 'cherry', 'banana', 'apple']
['date', 'apple', 'banana', 'cherry']
{'张三': 33, '李四': 36, '王五': 74, '赵六': 56, '李白': 88, '王维': 98, '杜甫': 100, '王昌龄': 89, '王之涣': 97, '王羲之': 93}
dict_items([('张三', 33), ('李四', 36), ('王五', 74), ('赵六', 56), ('李白', 88), ('王维', 98), ('杜甫', 100), ('王昌龄', 89), ('王之涣', 97), ('王羲之', 93)])
[('杜甫', 100), ('王维', 98), ('王之涣', 97), ('王羲之', 93), ('王昌龄', 89), ('李白', 88), ('王五', 74), ('赵六', 56), ('李四', 36), ('张三', 33)]
第1名:杜甫     成绩:100
第2名:王维     成绩:98
第3名:王之涣   成绩:97
第4名:王羲之   成绩:93
第5名:王昌龄   成绩:89
第6名:李白     成绩:88
第7名:王五     成绩:74
第8名:赵六     成绩:56
第9名:李四     成绩:36
第10名:张三    成绩:33
{'杜甫': 100, '王维': 98, '王之涣': 97, '王羲之': 93, '王昌龄': 89, '李白': 88, '王五': 74, '赵六': 56, '李四': 36, '张三': 33}

根据多个条件排序:

key后面返回一个元祖,先依据元祖第一个元素排序,再依据元祖第二个元素排序。

先依据数据个位数排序,再依据数据本身排序。

scores = [78, 85, 90, 73, 92,63]
sorted_scores = sorted(scores, key=lambda x: (x % 10, x))
print(sorted_scores)

结果:

[90, 92, 63, 73, 85, 78]

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部