• python之字典和结构化数据


    摘要:本文主要介绍了字典数据类型

    1、字典数据类型

    1.1 从例子入手

    首先为了更好的了解一下字典这种数据结构,直接举一个例子,使得我们对其有更加形象的认识:

    1 >>> sam={'animal':'cat','color':'green','food':'chicken'}
    2 >>> sam['animal']
    3 'cat'

    上面的这种数据结构的定义方法就是字典:采用了键---值的形式。正如我们现实中运用的字典,查找一个词,后面会跟上这个词的一些含义。并且我们在查找某个词时可以直接用字典名【键】的方式进行索引。

    1.2 和列表的比较

    列表中的内容是有顺序的,也就是说顺序不同而元素相同的情况下,列表是不同的,而字典则没有顺序的概念,只要元素的个数和名称以及内容是一样的,那么就是同一个字典。

    1.3 类方法的使用

    当我们定义了一个字典以后,由于字典是没有顺序的,那么我们该如何遍历访问每一个字典的成员呢?

    可以用类方法keys()、values()、items()来遍历访问键、值和键-值,具体如下:

     1 >>> sam={'color':'red','num':42,'food':'chicken'}
     2 >>> for v in sam.values():
     3     print(v)
     4 
     5 red
     6 42
     7 chicken
     8 >>> for i in sam.keys():
     9     print(i)
    10 
    11 color
    12 num
    13 food
    14 >>> for k in sam.items():
    15     print(k)
    16 
    17 ('color', 'red')
    18 ('num', 42)
    19 ('food', 'chicken')

    1.4 检查一个键或值是否在字典中

    直接用in,返回布尔值

    1 >>> 'apple' in sam.values()
    2 False

    1.5 get()方法

    当我们要检查一个值是否在字典中时,可能会比较麻烦:首先判断该值是否在字典中,如果在才可以显示该值。如果不这样操作,而是直接寻找,那么程序就会崩溃,这就很不方便,于是发明了get()方法:

    get()方法有两个参数,第一个是要取得其值的键,第二个是如果不存在时的备用返回值

    1 >>> bam={'color':'red','num':42,'food':'chicken'}
    2 >>> pos=bam.get('color','there is not')
    3 >>> pos
    4 'red'
    5 >>> bos=bam.get('key','there is not')
    6 >>> bos
    7 'there is not'

    1.6 setdefault()方法

    有的时候我们确切地需要一个值,但是这样的一个值又不存在于字典中,那么我们就可以通过setdefault()方法将这样的一个值添加到字典中,添加到字典中以后,如果再次调用这个方法,由于键值已经存在了,新的键值便不会再次添加,也不会再进行更新。如下:

    1 >>> bam={'color':'red','num':42,'food':'chicken'}
    2 >>> bam.setdefault('name','mike')
    3 'mike'
    4 >>> bam
    5 {'color': 'red', 'num': 42, 'food': 'chicken', 'name': 'mike'}
    6 >>> bam.setdefault('name','jone')
    7 'mike'
    8 >>> bam
    9 {'color': 'red', 'num': 42, 'food': 'chicken', 'name': 'mike'}

    1.7 漂亮打印

    import pprint
    message='It was a bright cold day in April,and the clocks were striking thirteen'
    count={}
    for character in message:
        count.setdefault(character,0)
        count[character]=+2
    pprint.pprint(count)

    输出结果:

     1 {' ': 2,
     2  ',': 2,
     3  'A': 2,
     4  'I': 2,
     5  'a': 2,
     6  'b': 2,
     7  'c': 2,
     8  'd': 2,
     9  'e': 2,
    10  'g': 2,
    11  'h': 2,
    12  'i': 2,
    13  'k': 2,
    14  'l': 2,
    15  'n': 2,
    16  'o': 2,
    17  'p': 2,
    18  'r': 2,
    19  's': 2,
    20  't': 2,
    21  'w': 2,
    22  'y': 2}

    关于漂亮打印,主要是引入了pprint模块,这个模块中包含了两个重要的打印方式:pprint()和pformat(),下面的两种方式是等价的:

    import pprint
    message='It was a bright cold day in April,and the clocks were striking thirteen'
    count={}
    for character in message:
        count.setdefault(character,0)
        count[character]=+2
    pprint.pprint(count)
    print(pprint.pformat(count))  #和上一句是等价的  
    pprint.pformat(count)   #pformat这种方法并不是显示到屏幕上,而是形成一个字符串保存起来,保存的格式和打印出的格式相同

    下面的输出结果是:

     1 {' ': 2,
     2  ',': 2,
     3  'A': 2,
     4  'I': 2,
     5  'a': 2,
     6  'b': 2,
     7  'c': 2,
     8  'd': 2,
     9  'e': 2,
    10  'g': 2,
    11  'h': 2,
    12  'i': 2,
    13  'k': 2,
    14  'l': 2,
    15  'n': 2,
    16  'o': 2,
    17  'p': 2,
    18  'r': 2,
    19  's': 2,
    20  't': 2,
    21  'w': 2,
    22  'y': 2}
    23 {' ': 2,
    24  ',': 2,
    25  'A': 2,
    26  'I': 2,
    27  'a': 2,
    28  'b': 2,
    29  'c': 2,
    30  'd': 2,
    31  'e': 2,
    32  'g': 2,
    33  'h': 2,
    34  'i': 2,
    35  'k': 2,
    36  'l': 2,
    37  'n': 2,
    38  'o': 2,
    39  'p': 2,
    40  'r': 2,
    41  's': 2,
    42  't': 2,
    43  'w': 2,
    44  'y': 2}
  • 相关阅读:
    Photoshop 更改图片颜色
    搜索引擎优化网页设计:最佳实践
    Cocos2d-x 精灵碰撞检測(方法一)
    JS 计算2个日期相差的天数
    《Java并发编程实战》第七章 取消与关闭 读书笔记
    LeetCode_3Sum
    Pascal Hexagrammum Mysticum 的深度探索
    HDU 5274 Dylans loves tree(LCA+dfs时间戳+成段更新 OR 树链剖分+单点更新)
    高速查询hive数据仓库表中的总条数
    cocos2d-x触摸事件优先级
  • 原文地址:https://www.cnblogs.com/lzy820260594/p/11535260.html
Copyright © 2020-2023  润新知