python对列表中的元素(字典)进行排序
1. 按照字典元素中的t值的下标大小进行排序由于t值是字符串类型,那么需要将下标截取出来,然后再对name进行排序a = [{"value": "用途","name": "t4"},{"value": "期初累计摊额","name": "t10"},{"value": "原值","name": "t5"},...
·
一、列表中包含有相同类型的字典
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)])
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献8条内容
所有评论(0)