• python:OderedDict函数


    python:OederedDict函数

    OederDict:是 Python 标准库中的一个数据结构,它是一个有序的字典(Ordered Dictionary)。与普通字典不同,有序字典会记住元素的插入顺序,这意味着你可以按照元素插入的顺序来迭代字典中的键值对。

    1.基本用法

    我们可以使用 collections 模块来导入 OrderedDict,然后使用它来创建有序字典。以下是一个示例:

    from collections import OrderedDict
    
    # 创建一个空的有序字典
    my_ordered_dict = OrderedDict()
    
    # 向有序字典中添加键值对,保持插入顺序
    my_ordered_dict['apple'] = 3
    my_ordered_dict['banana'] = 2
    my_ordered_dict['cherry'] = 5
    
    # 迭代有序字典,会按照插入顺序输出
    for key, value in my_ordered_dict.items():
        print(key, value)
    
    # 输出结果将按照插入的顺序保持一致
    # apple 3
    # banana 2
    # cherry 5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    OrderedDict 在某些情况下非常有用,特别是当你需要保持数据的顺序性,并且需要在迭代字典时按照插入的顺序访问数据时。它是一个非常方便的工具,用于处理需要保持顺序的数据。

    2.排序

    OrderedDict可根据key 或者val 进行排序,例如:

    from collections import OrderedDict
    
    # 创建一个空的有序字典
    my_ordered_dict = OrderedDict()
    
    # 添加key和value到列表
    my_ordered_dict['banana'] = 3
    my_ordered_dict['apple'] = 2
    my_ordered_dict['cherry'] = 5
    my_ordered_dict['grape'] = 4
    
    # 显示列表按照插入顺序
    print("my_ordered_dict:")
    for key, value in my_ordered_dict.items():
        print(f"{key}: {value}")
        
    # 输出结果:
    # my_ordered_dict:
    # banana: 3
    # apple: 2
    # cherry: 5
    # grape: 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    (1)按照key的首字母顺序排序
    如果你想按照键(key)的首字母顺序对 OrderedDict 进行排序,你可以使用 Python 的 sorted() 函数,并传递一个自定义的排序函数作为参数。这个自定义的排序函数应该基于字典的键来进行排序。以下是示例代码:

    from collections import OrderedDict
    
    # 创建一个空的有序字典
    my_ordered_dict = OrderedDict()
    
    # 添加key和value到列表
    my_ordered_dict['banana'] = 3
    my_ordered_dict['apple'] = 2
    my_ordered_dict['cherry'] = 5
    my_ordered_dict['grape'] = 4
    
    # 自定义排序函数,按照键的首字母顺序进行排序
    def sort_by_key(item):
        return item[0]
    
    # 使用 sorted() 函数按键对字典进行排序
    sorted_dict = OrderedDict(sorted(my_ordered_dict.items(), key=sort_by_key))
    
    # 输出按键的首字母顺序排序后的字典
    print("my_ordered_dict:")
    for key, value in sorted_dict.items():
        print(f"{key}: {value}")
    
    # 输出结果:
    # my_ordered_dict:
    # apple: 2
    # banana: 3
    # cherry: 5
    # grape: 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在上述代码中,我们首先定义了一个名为 sort_by_key 的自定义排序函数,它接受一个键值对作为参数,并返回该键值对的键(即 item[0])。然后,我们使用 sorted() 函数来对 my_ordered_dict 中的键值对进行排序,将 sort_by_key 函数作为 key 参数传递。

    (2)按照value的大小排序
    如果你想按照 OrderedDict 中键值对的值(即 value)的大小进行排序,你可以使用 Python 的 sorted() 函数,并传递一个自定义的排序函数作为参数。这个自定义的排序函数应该基于字典的值来进行排序。以下是示例代码:

    from collections import OrderedDict
    
    # 创建一个空的有序字典
    my_ordered_dict = OrderedDict()
    
    # 添加key和value到列表
    my_ordered_dict['banana'] = 3
    my_ordered_dict['apple'] = 2
    my_ordered_dict['cherry'] = 5
    my_ordered_dict['grape'] = 4
    
    # 自定义排序函数,按照键的首字母顺序进行排序
    def sort_by_value(item):
        return item[1]
    
    # 使用 sorted() 函数按键对字典进行排序
    sorted_dict = OrderedDict(sorted(my_ordered_dict.items(), key=sort_by_value))
    
    # 输出value大小排序后的字典
    print("my_ordered_dict:")
    for key, value in sorted_dict.items():
        print(f"{key}: {value}")
    
    # 输出结果:
    # my_ordered_dict:
    # apple: 2
    # banana: 3
    # grape: 4
    # cherry: 5
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在上述代码中,我们首先定义了一个名为 sort_by_value 的自定义排序函数,它接受一个键值对作为参数,并返回该键值对的值(即 item[1])。然后,我们使用 sorted() 函数来对 my_ordered_dict 中的键值对进行排序,将 sort_by_value 函数作为 key 参数传递

    3.其他基本用法

    (1)添加和访问键值对

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    #添加和访问键值对:
    my_ordered_dict['grape'] = 4
    print(my_ordered_dict)  
    # 输出结果:
    # OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3), ('grape', 4)])
    # 2
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (2)迭代 OrderedDict

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 迭代 OrderedDict
    for key, value in my_ordered_dict.items():
        print(key, value)
    
    # 输出结果:
    # apple 1
    # banana 2
    # cherry 3
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    (3)删除键值对

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 删除键值对
    del my_ordered_dict['apple']
    print(my_ordered_dict) 
    
    # 输出结果:
    # OrderedDict([('banana', 2), ('cherry', 3)])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (4)获取字典的大小

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 获取字典的大小
    size = len(my_ordered_dict)
    print(size)
    
    # 输出结果:
    # 3
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (5)使用 clear() 方法删除所有键值对

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 使用 clear() 方法删除所有键值对
    my_ordered_dict.clear()
    print(my_ordered_dict)
    
    # 输出结果:
    # OrderedDict()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (6) 复制字典

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 复制字典
    copy_dict = my_ordered_dict.copy()
    print(my_ordered_dict)
    print(copy_dict)
    
    # 输出结果:
    # OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    # OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    (7)用 popitem() 方法移除最后一个键值对

    from collections import OrderedDict
    my_ordered_dict = OrderedDict()
    my_ordered_dict = OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])
    
    # 用 popitem() 方法可以移除最后一个键值对
    last_item = my_ordered_dict.popitem()
    print(my_ordered_dict)
    
    # 输出结果:
    # OrderedDict([('apple', 1), ('banana', 2)])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    IBM研究员:人工智能+量子计算可解决抗生素耐药性挑战
    【Flutter】IOS运行工程二次启动崩溃问题。
    互联网Java工程师面试题·MySQL 篇·第二弹
    使用 Python Timedelta 月份计算日期
    单元测试及其工具Junit
    APS自动排程在橡胶行业的应用
    OpenCV-Python小应用(六):车道线检测
    2024/04/25
    常用数据结构 ——— 队列(环形队列和顺序队列)
    旋转矩阵左乘的理解
  • 原文地址:https://blog.csdn.net/weixin_43915090/article/details/136629831