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

  • 相关阅读:
    ubuntu安装jdk的两种方法
    LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
    LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
    LeetCode 476. Number Complement (数的补数)
    LeetCode 575. Distribute Candies (发糖果)
    LeetCode 461. Hamming Distance (汉明距离)
    LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
    LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
    LeetCode 371. Sum of Two Integers (两数之和)
    LeetCode 342. Power of Four (4的次方)
  • 原文地址:https://www.cnblogs.com/ting6/p/9725774.html
Copyright © 2011-2022 走看看