字段字段进行排序。"/>
Python 字典列表,根据字段字段进行排序。
对字典列表进行排序
from operator import itemgetter# 有如下一个列表,我们需要给其中的字典进行排序,比如根据uid排序
rows = [{'name': 'Brian', 'id': 1003},{'name': 'David', 'id': 1002},{'name': 'John', 'id': 1001},{'name': 'Big', 'id': 1004},{'name': 'Ag', 'id': 1004}
]# 改变当前列表
# rows.sort(key = lambda r:r.get("uid"))
# print(rows)# 新建列表
# rows_by_id = sorted(rows,key = lambda r:r.get("id"))
# print(rows_by_id)# 使用lambda 根据id和name进行排序
# rows_by_id_name = sorted(rows, key=lambda r: (r['id'],r['name']))
# print(rows_by_id_name)# 使用operator中的itemgetter,根据id排序
# rows_by_id = sorted(rows, key=itemgetter('id'))
# print(rows_by_id )根据id和name排序
rows_by_id_name = sorted(rows, key=itemgetter('id','name'))
print(rows_by_id_name)
如果排序的不是列表中元素不是字典,而是一个自定义对象,根据对象的属性进行排序,同理。
使用 operator .attrgetter
from operator import attrgetterclass User:def __init__(self, user_id):self.user_id = user_iddef __repr__(self):return 'User({})'.format(self.user_id)def sort_notcompare():users = [User(23), User(3), User(99)]# print(users)# print(sorted(users, key=lambda u: u.user_id))print(users)print(sorted(users, key=attrgetter('user_id')))if __name__ == "__main__":sort_notcompare()
更多推荐
Python 字典列表,根据字段字段进行排序。
发布评论