在Python中字典排序

本文介绍了如何在Python中使用sorted()函数对字典按key和value进行排序,以及Counter类的用法,展示了不同排序方式和应用场景。
部署运行你感兴趣的模型镜像
  • 一般列表用sort()函数,但是字典中没有内嵌的sort()函数,字典需用sorted()函数,具体用法如下:
    1. 直接使用sorted(),函数将按Ascall码的顺序只返回字典中的key列表(或者是一个value列表):
      """
      --coding:utf-8 -*-
      Time:2023/11/27 11:18
      Author:静默追光
      """
      
      
      dic={'b':2,'c':1,'d':4,'a':5,'e':3}
      a=sorted(dic)
      输出:
      ['a', 'b', 'c', 'd', 'e']
      dic={'b':2,'c':1,'d':4,'a':5,'e':3}
      b=sorted(dic.values())#根据值排序
      print(b)
      输出:
      [1, 2, 3, 4, 5]
    2. 我们可以调用字典中的items()函数按key对它进行排序,并返回一个元组列表:
      d=sorted(dic.items())#默认根据key按ASCALL码排序
      print(d)
      #结果:
      [('a', 5), ('b', 2), ('c', 1), ('d', 4), ('e', 3)]
    3. 按字典的value值进行排序(x[0]代表key键,x[1]代表values值):
      e=sorted(dic.items(),key=lambda x:x[0])#x[0]=key,根据key按ASCALL码排序
      print(e)
      #结果:
      [('a', 5), ('b', 2), ('c', 1), ('d', 4), ('e', 3)]
      f=sorted(dic.items(),key=lambda x:x[1])#x[1]=value,默认升序
      print(f)
      #结果:
      [('c', 1), ('b', 2), ('e', 3), ('d', 4), ('a', 5)]
      g=sorted(dic.items(),key=lambda x:-x[1])#x[0]=key,加'-'为反向排序
      print(g)
      #结果:
      [('a', 5), ('d', 4), ('e', 3), ('b', 2), ('c', 1)]
      h=sorted(dic.items(),key=lambda x:x[0],reverse=True)#x[0]=key,reverse=True:反向排序,默认为FALSE
      print(h)
      #结果:
      [('e', 3), ('d', 4), ('c', 1), ('b', 2), ('a', 5)]
    4. counter是一个dict子类,它是无序集合,其中的元素作为字典的key储存,它们的计数作为字典的value存储。创建counter时,使用以下代码:
      from collections import Counter
      dic_counter=Counter(dic(zip(letters,numbers)))
      dic_counter=Counter({'b':2,'c':1,'d':4,'a':5,'e':3})
      print(dic_counter)
      #输出
      Counter({'a': 5, 'd': 4, 'e': 3, 'b': 2, 'c': 1})
    5. 当我们想要按value对字典进行排序时,我们可以使用most_common()函数:
      eh=dic_counter.most_common()
      print(eh)
      #输出
      [('a', 5), ('d', 4), ('e', 3), ('b', 2), ('c', 1)]

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们被要求解释如何在Python中对字典按键或值进行排序。根据引用,我们可以使用sorted()函数,并指定key参数来实现。注意:字典本身是无序的(在Python3.6之前),但从Python3.7开始,字典会保持插入顺序。但这里我们讨论的是按照键或值进行排序,生成一个有序的列表(或类似的有序结构)。引用中提供了几种方法:1.使用sorted()函数对字典的键值对(items)进行排序,通过key参数指定按照键还是值排序。2.通过列表的排序来间接达到有序字典的目的(实际上,我们可以用collections.OrderedDict来保存排序后的结果,以得到一个有序的字典)。具体步骤:按键排序:sorted(dict.items(),key=lambdae:e[0])#e[0]表示键按值排序:sorted(dict.items(),key=lambdae:e[1])#e[1]表示值另外,reverse参数可以控制升序(False,默认)或降序(True)。注意:sorted()函数返回的是一个列表,列表中的每个元素是原字典的键值对(元组形式)。如果我们希望得到一个有序字典,可以使用collections.OrderedDict来接收这个排序后的列表。我们还可以直接对键或值进行排序,然后根据排序后的键或值来构建新的有序字典。示例代码将包括:1.按键排序(升序、降序)2.按值排序(升序、降序)3.将排序后的结果转换为有序字典(OrderedDict)或普通字典Python3.7+普通字典也保持插入顺序,所以可以直接用dict()转换,但为了代码清晰,建议使用OrderedDict)注意:在Python3.7+中,普通字典已经记住插入顺序,所以我们可以直接通过dict(sorted(dict.items(),key=...))来得到一个有序的字典(按插入顺序,即排序后的顺序)。根据引用[1][2][3][4],我们可以总结如下。</think>在 Python 中对字典按键或值排序有多种方法,核心是使用 `sorted()` 函数结合 `key` 参数。以下是详细方法和示例: --- ### **1. 按键排序** #### 方法 1:直接对键排序 ```python my_dict = {'Caitlyn': 21, 'Darius': 45, 'Bard': 33} sorted_keys = sorted(my_dict.keys()) # 升序 # 降序:sorted(my_dict.keys(), reverse=True) print(sorted_keys) # 输出: ['Bard', 'Caitlyn', 'Darius'] ``` #### 方法 2:对键值对排序 ```python sorted_items = sorted(my_dict.items(), key=lambda x: x[0]) # 按键升序 # 降序:key=lambda x: x[0], reverse=True print(sorted_items) # 输出: [('Bard', 33), ('Caitlyn', 21), ('Darius', 45)] ``` #### 转换为有序字典: ```python from collections import OrderedDict ordered_dict = OrderedDict(sorted_items) print(ordered_dict) # 输出: OrderedDict([('Bard', 33), ('Caitlyn', 21), ('Darius', 45)]) ``` --- ### **2. 按值排序** #### 方法 1:直接对值排序 ```python sorted_values = sorted(my_dict.values()) # 升序 print(sorted_values) # 输出: [21, 33, 45] ``` #### 方法 2:按值排序键值对 ```python sorted_items = sorted(my_dict.items(), key=lambda x: x[1]) # 按值升序 # 降序:key=lambda x: x[1], reverse=True print(sorted_items) # 输出: [('Caitlyn', 21), ('Bard', 33), ('Darius', 45)] ``` #### 按值排序后获取键: ```python keys_sorted_by_value = sorted(my_dict, key=my_dict.get) print(keys_sorted_by_value) # 输出: ['Caitlyn', 'Bard', 'Darius'] ``` --- ### **关键参数说明** - **`sorted(iterable, key=..., reverse=...)`** - `key`:指定排序依据的函数,常用 `lambda` 表达式 - `reverse`:`False` 为升序(默认),`True` 为降序 - **`dict.items()`**:返回键值对元组 `(key, value)` 的可迭代对象 - **`lambda` 表达式**: - 按键排序:`lambda x: x[0]`(`x[0]` 是键) - 按值排序:`lambda x: x[1]`(`x[1]` 是值) --- ### **完整示例** ```python # 原始字典 heroes = {'Caitlyn': 21, 'Darius': 45, 'Bard': 33} # 按键升序排序 sorted_by_key = dict(sorted(heroes.items(), key=lambda x: x[0])) print("按键排序:", sorted_by_key) # 输出: {'Bard': 33, 'Caitlyn': 21, 'Darius': 45} # 按值降序排序 sorted_by_value = dict(sorted(heroes.items(), key=lambda x: x[1], reverse=True)) print("按值降序:", sorted_by_value) # 输出: {'Darius': 45, 'Bard': 33, 'Caitlyn': 21} ``` > **注意**:Python 3.7+ 的普通字典会保留插入顺序,因此直接转换 `sorted()` 结果为 `dict` 即可得到有序字典[^1][^2][^3][^4]。 --- ### **应用场景** 1. **数据处理**:对统计结果(如词频)按值排序 2. **配置管理**:按键排序配置文件 3. **数据分析**:在 Pandas 前预处理数据
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值