python字典进行排序

 2025-09-14  阅读 18  评论 0

摘要:在Python中,字典本身是无序的(Python 3.7之前)或保持插入顺序(Python 3.7+),但可以通过内置函数`sorted`对字典的键值对进行排序。以下是常见的排序方法:
1. 按键排

在Python中,字典本身是无序的(Python 3.7之前)或保持插入顺序(Python 3.7+),但可以通过内置函数`sorted`对字典的键值对进行排序。以下是常见的排序方法:

python字典进行排序

1. 按键排序

将字典按照键的字母顺序或数值大小排序:

python

d = {'a': 3, 'b': 1, 'c': 2}

按键升序排序,返回列表

sorted_by_key = sorted(d.items, key=lambda x: x[0])

print(sorted_by_key) 输出: [('a', 3), ('b', 1), ('c', 2)]

转换为有序字典(Python 3.7+)

sorted_dict = dict(sorted_by_key)

print(sorted_dict) 输出: {'a': 3, 'b': 1, 'c': 2}

2. 按值排序

将字典按照值的大小排序:

python

按值升序排序

sorted_by_value = sorted(d.items, key=lambda x: x[1])

print(sorted_by_value) 输出: [('b', 1), ('c', 2), ('a', 3)]

按值降序排序

sorted_by_value_desc = sorted(d.items, key=lambda x: x[1], reverse=True)

print(sorted_by_value_desc) 输出: [('a', 3), ('c', 2), ('b', 1)]

3. 使用`itemgetter`优化

通过`operator.itemgetter`提高代码可读性和效率:

python

from operator import itemgetter

按键排序

sorted_by_key = sorted(d.items, key=itemgetter(0))

按值排序

sorted_by_value = sorted(d.items, key=itemgetter(1))

4. 复杂排序

多级排序(例如先按值,再按键):

python

d = {'a': 2, 'b': 1, 'c': 2}

先按值升序,再按键升序

sorted_complex = sorted(d.items, key=lambda x: (x[1], x[0]))

print(sorted_complex) 输出: [('b', 1), ('a', 2), ('c', 2)]

5. 旧版本Python的兼容方案(Python 3.7之前)

使用`collections.OrderedDict`保持顺序:

python

from collections import OrderedDict

sorted_items = sorted(d.items, key=lambda x: x[1])

ordered_dict = OrderedDict(sorted_items)

print(ordered_dict) 输出: OrderedDict([('b', 1), ('c', 2), ('a', 3)])

总结

  • 使用`sorted(d.items, key=...)`生成排序后的键值对列表。
  • 通过`dict`或`OrderedDict`将列表转换为字典。
  • `key`参数决定排序依据,`lambda`或`itemgetter`均可指定排序规则。
  • `reverse=True`实现降序排序。

    版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。

    原文链接:https://www.6g9.cn/qwsh/dd35dAD5UVVZWBg.html

    发表评论:

    管理员

    • 内容66367
    • 积分0
    • 金币0
    关于我们
    知妳网是一个专注于知识成长与生活品质的温暖社区,致力于提供情感共鸣、实用资讯与贴心服务。在这里,妳可以找到相关的知识、专业的建议,以及提升自我的优质内容。无论是职场困惑、情感心事,还是时尚美妆、健康生活,知妳网都能精准匹配妳的需求,陪伴妳的每一步成长。因为懂妳,所以更贴心——知妳网,做妳最知心的伙伴!
    联系方式
    电话:
    地址:广东省中山市
    Email:admin@qq.com

    Copyright © 2022 知妳网 Inc. 保留所有权利。 Powered by

    页面耗时0.0437秒, 内存占用1.71 MB, 访问数据库19次