python中字典怎么排序

 2025-09-16  阅读 28  评论 0

摘要:在Python中,字典的排序可以通过内置的`sorted`函数结合`key`参数来实现。以下是不同场景下的具体方法:
1. 按键排序
python
d = {'a': 3, 'c': 1, 'b

在Python中,字典的排序可以通过内置的`sorted`函数结合`key`参数来实现。以下是不同场景下的具体方法:

python中字典怎么排序

1. 按键排序

python

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

按键升序排列,返回有序字典

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

结果:{'a': 3, 'b': 2, 'c': 1}

按键降序排列

sorted_by_key_desc = dict(sorted(d.items, key=lambda x: x[0], reverse=True))

结果:{'c': 1, 'b': 2, 'a': 3}

2. 按值排序

python

按值升序排列

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

结果:{'c': 1, 'b': 2, 'a': 3}

按值降序排列

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

结果:{'a': 3, 'b': 2, 'c': 1}

3. 复杂排序

  • 多条件排序:例如先按值排序,值相同再按键排序。
  • python

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

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

    结果:{'c': 1, 'a': 2, 'b': 2}

  • 按值属性排序:若值为对象,可按属性排序。
  • python

    class Person:

    def __init__(self, age):

    self.age = age

    d = {'Alice': Person(30), 'Bob': Person(25)}

    sorted_by_age = dict(sorted(d.items, key=lambda x: x[1].age))

    结果:{'Bob': <__main__.Person object>, 'Alice': <__main__.Person object>}

    4. 返回列表而非字典

    若只需排序后的键、值或键值对列表:

    python

    按键列表

    keys_sorted = sorted(d.keys)

    按值列表

    values_sorted = sorted(d.values)

    按键值元组列表

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

    注意事项

  • Python版本:Python 3.7+ 的普通字典会保持插入顺序,若需兼容旧版本,可使用`collections.OrderedDict`。
  • 大小写敏感:排序时可通过`key=lambda x: x[0].lower`实现不区分大小写。
  • 类型一致性:确保排序键/值的类型一致,避免比较错误。
  • 通过灵活使用`sorted`和`key`参数,可以实现字典的多种排序需求。

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

    原文链接:https://www.6g9.cn/bkkp/ddfccAz5XU1RTBg.html

    发表评论:

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

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

    页面耗时0.0619秒, 内存占用1.7 MB, 访问数据库21次