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

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

  • 相关阅读:
    移动开发 Native APP、Hybrid APP和Web APP介绍
    urllib与urllib2的学习总结(python2.7.X)
    fiddler及postman讲解
    接口测试基础
    UiAutomator2.0 和1.x 的区别
    adb shell am instrument 命令详解
    GT问题记录
    HDU 2492 Ping pong (树状数组)
    CF 567C Geometric Progression
    CF 545E Paths and Trees
  • 原文地址:https://www.cnblogs.com/lowmanisbusy/p/10257360.html
Copyright © 2011-2022 走看看