zoukankan      html  css  js  c++  java
  • 一起学Python:字典介绍

    字典介绍

    想一想:

    如果有列表
    
         nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi'];
    
    需要对"xiaoWang"这个名字写错了,通过代码修改:
    
         nameList[1] = 'xiaoxiaoWang'
    
    如果列表的顺序发生了变化,如下
    
         nameList = ['xiaoWang', 'xiaoZhang',  'xiaoLi'];
    
    此时就需要修改下标,才能完成名字的修改
    
         nameList[0] = 'xiaoxiaoWang'
    
    有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?
    

    答:

    字典
    

    另一个场景:

    学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?

    >>> studens = [[1001, "王宝强", 24], [1002, "马蓉", 23], [1005, "宋喆"24], ...]   
    

    循环遍历? No!
    <1>生活中的字典

    <2>软件开发中的字典

    变量info为字典类型:

    
     info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
    

    说明:

    字典和列表一样,也能够存储多个数据
    
    列表中找某个元素时,是根据下标进行的
    
    字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name''id''sex')
    
    字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值
    

    <3>根据键访问值

    
      info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
    
    print(info['name'])
        print(info['address']) 
    

    结果:

    班长
    地球亚洲中国北京
    

    若访问不存在的键,则会报错:

    >>> info['age']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'age'
    

    在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

    
    >>> age = info.get('age')
    >>> age #'age'键不存在,所以age为None
    >>> type(age)
    <type 'NoneType'>
    >>> age = info.get('age', 18) 
    # 若info中不存在'age'这个键,就返回默认值18
    >>> age
    18
    

    字典的常见操作1

    <1>修改元素

    字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改

    demo:

    info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
    
        newId = input('请输入新的学号')
    
        info['id'] = int(newId)
    
        print('修改之后的id为%d:'%info['id'])
    
    
    <2>添加元素

    demo:访问不存在的元素

       info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}
    
        print('id为:%d'%info['id'])
    
    

    如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素

    demo:添加新的元素

    
    info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}
    
        # print('id为:%d'%info['id'])#程序会终端运行,因为访问了不存在的键
    
        newId = input('请输入新的学号')
    
        info['id'] = newId
    
        print('添加之后的id为:%d'%info['id'])
    
    

    结果:

    请输入新的学号188
    添加之后的id为: 188
    
    <3>删除元素

    对字典进行删除操作,有一下几种:

    del
    
    clear()
    

    demo:del删除指定的元素

    
       info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}
    
        print('删除前,%s'%info['name'])
    
        del info['name']
    
        print('删除后,%s'%info['name'])
    
    

    demo:del删除整个字典

       info = {'name':'monitor', 'sex':'f', 'address':'China'}
    
        print('删除前,%s'%info)
    
        del info
    
        print('删除后,%s'%info)
    
    

    demo:clear清空整个字典

    
       info = {'name':'monitor', 'sex':'f', 'address':'China'}
    
        print('清空前,%s'%info)
    
        info.clear()
    
        print('清空后,%s'%info)
    
    

    字典的常见操作2

    <1>len()

    测量字典中,键值对的个数

    <2>keys

    返回一个包含字典所有KEY的列表

    <3>values

    返回一个包含字典所有value的列表

    <4>items

    返回一个包含所有(键,值)元祖的列表

    <5>has_key

    dict.has_key(key)如果key在字典中,返回True,否则返回False

    遍历

    通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

    注意python语法的缩进
    字符串遍历

        >>> a_str = "hello itcast">>> for char in a_str:...  
           print(char,end=' ')
        ...
        h e l l o   i t c a s t
    

    列表遍历

        >>> a_list = [1, 2, 3, 4, 5]>>> for num in a_list:...    
         print(num,end=' ')
        ...1 2 3 4 5
    

    元组遍历

        >>> a_turple = (1, 2, 3, 4, 5)>>> for num in a_turple:...
             print(num,end=" ")1 2 3 4 5
    

    字典遍历
    <1> 遍历字典的key(键)

    <2> 遍历字典的value(值)

    <3> 遍历字典的项(元素)

    <4> 遍历字典的key-value(键值对)

    想一想,如何实现带下标索引的遍历

        >>> chars = ['a', 'b', 'c', 'd']
        >>> i = 0>>> for chr in chars:...  
           print("%d %s"%(i, chr))...     i += 1...0 a1 b2 c3 d
    

    enumerate()

        >>> chars = ['a', 'b', 'c', 'd']
        >>> for i, chr in enumerate(chars):...   
          print i, chr
        ...0 a1 b2 c3 d
    

    原文链接:做最专业最懂你的编程微刊技术分享平台,提供你最需要的开发学习资源。 我们专注于编程开发技术的学习与交流,我们坚持,每天进步一小步,人生进步一大步!关注【编程微刊】,与我们一起学习进步。https://www.jianshu.com/u/05f416aefbe1

  • 相关阅读:
    net.sf.json.JSONObject maven下载到了但是java后台一直用不了问题
    创建springboot2.1项目运行报错
    百度地图,加载顺序异步问题,用定时器解决
    大话设计模式--(1)简单工厂模式
    H5页面单点登录跳回首页 http url参数转义
    H5页面,百度地图点击事件
    批量给数据两边加上双引号和逗号
    java基础源码 (6)--ArrayListt类
    前端 移动端H5页面 DEBUG
    H5页面,华为手机打开不加载JS的问题
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701836.html
Copyright © 2011-2022 走看看