本文目录导读:

在Python中,有多种方法可以按值对字典进行排序,这里提供几个常见的案例:
方法1:使用 sorted() 和 lambda 表达式
# 示例字典
scores = {'张三': 85, '李四': 92, '王五': 78, '赵六': 95}
# 按值升序排序(从低到高)
sorted_asc = dict(sorted(scores.items(), key=lambda x: x[1]))
print("升序排序:", sorted_asc)
# 输出: {'王五': 78, '张三': 85, '李四': 92, '赵六': 95}
# 按值降序排序(从高到低)
sorted_desc = dict(sorted(scores.items(), key=lambda x: x[1], reverse=True))
print("降序排序:", sorted_desc)
# 输出: {'赵六': 95, '李四': 92, '张三': 85, '王五': 78}
方法2:使用 itemgetter
from operator import itemgetter
scores = {'张三': 85, '李四': 92, '王五': 78, '赵六': 95}
# 按值升序排序
sorted_asc = dict(sorted(scores.items(), key=itemgetter(1)))
print("升序排序:", sorted_asc)
# 按值降序排序
sorted_desc = dict(sorted(scores.items(), key=itemgetter(1), reverse=True))
print("降序排序:", sorted_desc)
方法3:包含多个键值对或复杂值
# 字典包含复杂值
students = {
'张三': {'age': 20, 'score': 85},
'李四': {'age': 22, 'score': 92},
'王五': {'age': 19, 'score': 78}
}
# 按分数的值排序
sorted_by_score = dict(sorted(students.items(), key=lambda x: x[1]['score']))
print("按分数排序:", sorted_by_score)
# 按年龄的值排序(降序)
sorted_by_age = dict(sorted(students.items(), key=lambda x: x[1]['age'], reverse=True))
print("按年龄降序排序:", sorted_by_age)
方法4:处理字符串值
# 字符串作为值
city_population = {
'北京': '2154万',
'上海': '2428万',
'广州': '1868万',
'深圳': '1768万'
}
# 如果字符串值可以转换,按数值排序
sorted_cities = dict(sorted(city_population.items(),
key=lambda x: int(x[1].replace('万', '')),
reverse=True))
print("按人口降序排序:", sorted_cities)
# 输出: {'上海': '2428万', '北京': '2154万', '广州': '1868万', '深圳': '1768万'}
完整示例:按词频排序
# 单词出现频率统计
text = "apple banana apple orange banana apple"
word_count = {}
for word in text.split():
word_count[word] = word_count.get(word, 0) + 1
print("原字典:", word_count)
# 按出现频率降序排序
sorted_words = dict(sorted(word_count.items(),
key=lambda x: x[1],
reverse=True))
print("按频率降序排序:", sorted_words)
关键点:
sorted()函数返回排序后的键值对列表- 使用
dict()转换为字典 key=lambda x: x[1]表示按值排序reverse=True实现降序排序- 在 Python 3.7+ 中,字典会保持插入顺序
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播