51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2314|回复: 0
打印 上一主题 下一主题

1.13 字典数据类型与操作(非常常用)

[复制链接]

 成长值: 15816

  • TA的每日心情
    开心
    2018-9-25 20:47
  • 24

    主题

    39

    帖子

    457

    积分

    新手上路

    Rank: 1

    积分
    457
    跳转到指定楼层
    楼主
    发表于 2017-12-14 10:02:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 爱卫生 于 2017-12-15 10:29 编辑

    1 字典基础
    字典的特性:
    - dict是无序的
    - key必须是唯一的- key-value对的数据类型
    (列表的读取是通过找到元素的位置及下标来读取的)
    字典可以存储更复杂的信息,列表做不到。比如每个人都有很多标签,例如身高、体重、地址、年龄。。。这个是列表做不到的或者极其麻烦。
    而且即便存下来了,要取出来也极其麻烦。需要死记硬背在列表中的位置(这个位置叫下标)。
    dict的查询和我们查新华字典其实是一样的。新华字典就是找目录比如A开头的在第几页,然后就翻到第几页就找到了。
    1.1)字典的创建、修改和读取
    1. info = {
    2.     'p1':"alice",    'p2':"bob",    'p3':"clark"
    3. }
    4. print(info)
    5. print(info["p1"])
    6. info['p3']="cris"
    7. info['p4']="david"
    8. print(info)
    复制代码
    输出:
    1. {'p3': 'clark', 'p2': 'bob', 'p1': 'alice'}
    2. alice
    3. {'p4': 'david', 'p3': 'cris', 'p2': 'bob', 'p1': 'alice'}
    复制代码
    可以看到,dict的输出是无序的。通过key值如p1来读取数据。如果该key值不存在(如p4),则会在dict中增加一个新数据(如david)。dict中的数据除了info[key]来读取,还有一种方式。因为info[key]读取的话,需要事先知道这个数据一定存在,否则会报错。
    用info.get[key]就不会报错了。将print(info["p1"])改为以下代码,可以得到同样的效果,但如果p1不存在,就会输出none,不会报错(报错的话程序无法执行)。
    1. info = {
    2.     'p1':"alice",    'p2':"bob",    'p3':"clark"
    3. }
    4. print(info["p1"])
    5. print(info.get('p1'))
    6. print(info.get('p5'))
    复制代码
    输出:
    1. alice
    2. alice
    3. None
    复制代码
    而如果print(info["p5"])将得到以下输出:
    1.   print(info["p5"])
    2. KeyError: 'p5'
    复制代码
    程序没有执行,直接退出了。

    1.2)字典的删除
    del info可以删除整个字典。
    del info["p1"]可以删除key值为p1的数据。
    info.pop("p1")也是删除key值为p1的数据。
    info.popintem()是随机删除一个数据。

    问题:有没有一种方法可以判断数据是否在dict里?在,我就去取。不在,我就创建一个新的。答案:
    1. info = {
    2.     'p1':"alice",    'p2':"bob",    'p3':"clark"
    3. }
    4. print('p1' in info)
    5. print('p6' in info)
    复制代码
    结果:
    1. True
    2. False
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 14:54 , Processed in 0.073851 second(s), 33 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表