zoukankan      html  css  js  c++  java
  • Python 有序字典(OrderedDict)与 普通字典(dict)

    Python 的基础数据类型中的字典类型分为:无序字典 与 有序字典 两种类型

    1.无序字典(普通字典):

    my_dict = dict()
    my_dict["name"] = "lowman"
    my_dict["age"] = 26
    my_dict["girl"] = "Tailand"
    my_dict["money"] = 80
    my_dict["hourse"] = None
    for key, value in my_dict.items(): 
      print(key, value)

    输出:

    money 80
    girl Tailand
    age 26
    hourse None
    name lowman

    可以看见,遍历一个普通字典,返回的数据和定义字典时的字段顺序是不一致的。

    注意:

      Python3.6 改写了 dict 的内部算法,Python3.6 版本以后的 dict 是有序的,所以也就无须再关注 dict 顺序性的问题

    2.有序字典

    import collections
    
    my_order_dict = collections.OrderedDict()
    my_order_dict["name"] = "lowman"
    my_order_dict["age"] = 45
    my_order_dict["money"] = 998
    my_order_dict["hourse"] = None
    for key, value in my_order_dict.items(): print(key, value)

    输出:

    name lowman
    age 45
    money 998
    hourse None

    有序字典可以按字典中元素的插入顺序来输出。

    注意:

      有序字典的作用只是记住元素插入顺序并按顺序输出。如果有序字典中的元素一开始就定义好了,后面没有插入元素这一动作,那么遍历有序字典,其输出结果仍然是无序的,因为缺少了有序插入这一条件,所以此时有序字典就失去了作用,所以有序字典一般用于动态添加并需要按添加顺序输出的时候。

    如下面这个列子:

    import collections
    
    my_order_dict = collections.OrderedDict(name="lowman", age=45, money=998, hourse=None)
    
    for key, value in my_order_dict.items():
        print(key, value)

    输出:

    hourse None
    age 45
    money 998
    name lowman

    发现输出还是无序的,因为在定义有序字典的同时也定义了初始值,没有存在按序添加的操作,所以有序字典是没有记录插入字段的顺序,最后遍历时,得到数据的顺序仍然是无序的。

  • 相关阅读:
    Python全栈-第四课 学习笔记
    Python全栈-第三课 学习笔记
    Python全栈-第二课 学习笔记
    计算机网络技术-交换基础和Vlan间路由 学习笔记
    Linux运维-04系统管理和操作命令
    Linux运维-03远程连接
    Linux运维-02操作系统和系统安装(虚拟机)
    Linux运维-01硬件组成概念介绍
    计算机网络技术-路由-OSPF 学习笔记
    python基础 day17 模拟博客园登录
  • 原文地址:https://www.cnblogs.com/lowmanisbusy/p/10257360.html
Copyright © 2011-2022 走看看