笔记——对字典中值的特定字段进行排序

特定字段排序

对于包含字符+数字的值信息,如果希望按照值中的数字字段对字典排序,可以结合正则表达式处理

例如:处理一个带有如下信息的字典排序

ori_dict = {
    '肖申克的救赎': '评分:9.7',
    '霸王别姬': '评分:9.6',
    '阿甘正传': '评分:9.5',
    '美丽人生': '评分:9.6',
    '泰坦尼克号': '评分:9.4',
    '楚门的世界': '评分:9.3',
    '疯狂动物城': '评分:9.2',
    '触不可及': '评分:9.3',
    '三傻大闹宝莱坞': '评分:9.2'}
# 处理方法
# 导入模块 re
import re

# 原始字典
ori_dict = {
    '肖申克的救赎': '评分:9.7',
    '霸王别姬': '评分:9.6',
    '阿甘正传': '评分:9.5',
    '美丽人生': '评分:9.6',
    '泰坦尼克号': '评分:9.4',
    '楚门的世界': '评分:9.3',
    '疯狂动物城': '评分:9.2',
    '触不可及': '评分:9.3',
    '三傻大闹宝莱坞': '评分:9.2'}

# 使用 sorted() 排序(排序后为列表格式),并转换为字典格式,
# re.sub() 将无关的字符替换为空
# 将数字转换为对应的数字类型 float/int
# 使用 lambda() 匿名函数对所有的值进行快速处理
# key 指定用于排序的关键字
# ori_dict.items()获取字典键值信息,传入value中,value[0]表示键,value[1]表示值
# reverse = True 表示降序排序,不写默认升序排序

# 降序
sorted_dict = dict(sorted(ori_dict.items(), key=lambda value: float(re.sub('评分:', '', value[1])), reverse=True))
# 升序
# sorted_dict = dict(sorted(ori_dict.items(), key=lambda value: float(re.sub('评分:', '', value[1]))))

print('ori_dict:')
for k,v in ori_dict.items():
    print('{}:{}'.format(k,v))

print('\nsorted_dict:')
for k,v in sorted_dict.items():
    print('{}:{}'.format(k,v))

结果
ori_dict:
肖申克的救赎:评分:9.7
霸王别姬:评分:9.6
阿甘正传:评分:9.5
美丽人生:评分:9.6
泰坦尼克号:评分:9.4
楚门的世界:评分:9.3
疯狂动物城:评分:9.2
触不可及:评分:9.3
三傻大闹宝莱坞:评分:9.2

sorted_dict:
肖申克的救赎:评分:9.7
霸王别姬:评分:9.6
美丽人生:评分:9.6
阿甘正传:评分:9.5
泰坦尼克号:评分:9.4
楚门的世界:评分:9.3
触不可及:评分:9.3
疯狂动物城:评分:9.2
三傻大闹宝莱坞:评分:9.2

你可能感兴趣的:(Python,python,开发语言)