python对列表中的元素(字典)进行排序

一、列表中包含有相同类型的字典

1. 按照字典元素中的t值的下标大小进行排序

       由于t值是字符串类型,那么需要将下标截取出来,然后再对name进行排序


a = [
    {
        "value": "用途",
        "name": "t4"
    },
    {
        "value": "期初累计摊额",
        "name": "t10"
    },
    {
        "value": "原值",
        "name": "t5"
    },
    {
        "value": "增加日期",
        "name": "t3"
    },
    {
        "value": "摊销期数",
        "name": "t7"
    },
    {
        "value": "净残值",
        "name": "t6"
    },
    {
        "value": "本月摊销额",
        "name": "t9"
    },
    {
        "value": "减值准备累计",
        "name": "t8"
    },
    {
        "value": "期末累计摊销额",
        "name": "t11"
    },
    {
        "value": "无形资产名称",
        "name": "t2"
    },
    {
        "value": "序号",
        "name": "t1"
    }
]

# 对a按照t的下标大小进行排序
a.sort(key=lambda s: int(s["name"][1:]))
print(a)

  打印结果:

[{'value': '序号', 'name': 't1'}, {'value': '无形资产名称', 'name': 't2'}, {'value': '增加日期', 'name': 't3'}, {'value': '用途', 'name': 't4'}, {'value': '原值', 'name': 't5'}, {'value': '净残值', 'name': 't6'}, {'value': '摊销期数', 'name': 't7'}, {'value': '减值准备累计', 'name': 't8'}, {'value': '本月摊销额', 'name': 't9'}, {'value': '期初累计摊额', 'name': 't10'}, {'value': '期末累计摊销额', 'name': 't11'}]

 

 

2. 直接按照name属性排序

     由于name属性是字符串,在使用sort()排序时,会按照字符串中每个字符的位置进行比较。

a.sort(key=lambda s: s["name"])

     打印结果:  

   [{'value': '序号', 'name': 't1'}, {'value': '期初累计摊额', 'name': 't10'}, {'value': '期末累计摊销额', 'name': 't11'}, {'value': '无形资产名称', 'name': 't2'}, {'value': '增加日期', 'name': 't3'}, {'value': '用途', 'name': 't4'}, {'value': '原值', 'name': 't5'}, {'value': '净残值', 'name': 't6'}, {'value': '摊销期数', 'name': 't7'}, {'value': '减值准备累计', 'name': 't8'}, {'value': '本月摊销额', 'name': 't9'}]

如果是字符串比较的话,10和11是在2的前面。

 

二、对列表中的元素按照key或者value进行排序

1. 按照字典中的key进行排序

import collections

dict_data = {'form': 2, 'file': 1, 'table': 3}
print(dict_data)
v = sorted(dict_data.items(), key=lambda s: int(s[1]))
print(v)
v = collections.OrderedDict(sorted(dict_data.items(), key=lambda s: s[0]))
print(v)

     打印结果:

{'form': 2, 'file': 1, 'table': 3}
[('file', 1), ('form', 2), ('table', 3)]
OrderedDict([('file', 1), ('form', 2), ('table', 3)])

 

2.按照字典中的value进行排序

import collections

dict_data = {'form': 2, 'file': 1, 'table': 3}
print(dict_data)
v = sorted(dict_data.items(), key=lambda s: int(s[1]))
print(v)
v = collections.OrderedDict(sorted(dict_data.items(), key=lambda s: int(s[1])))
print(v)
{'form': 2, 'file': 1, 'table': 3}
[('file', 1), ('form', 2), ('table', 3)]
OrderedDict([('file', 1), ('form', 2), ('table', 3)])
  • 19
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦钢铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值