Python元组与字典

发布时间:2019-08-17 08:48:55编辑:auto阅读(1779)


    python字典

    概念:字典是另一种可变容器类型,且可存储任意类型对象,如其他容器类型。

    字典由键和对应值成对组成。字典也被称作关联数组或哈希表。理解好一一对应的

    关系很重要

     

    1. 掌握字典类型

    a) 字典的特点

    无序: 通过键实现元素存取,故无序

    可变:可以通过键进行改变值

    异构:支持多种数据类型

    嵌套:可以在键值对中的值部分出现字典

    b) 定义字典:

    ii. 方法一:{key1:value1,key2:value2,...}

    iii. 方法二:dict()内置函数:指定键值

    例:d2=dict(name="jerry",age="45",gender="m")

    iv. 关键点:

    键与值用冒号“:”分开;

    项与项用逗号“,”分开;

    字典中的键必须是唯一的,而值可以不唯一

       实例:

       

    dict = {'Alice': '16', ' MadKing ': '17', 'Cecil': '18'}
    dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 } 嵌套定义


    访问字典里的值

    把相应的键放入熟悉的方括弧,如下实例:


     

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
      
    print "dict['Name']: ", dict['Name'];
    print "dict['Age']: ", dict['Age'];

    wKiom1jkaKSTehjIAAAK88h6tPc141.png


    如果用字典里没有的键访问数据,会输出错误如下


    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
      
    print "dict['Alice']: ", dict['Alice'];


    以上实例输出结果

    1

    2

    3

    4

    5

    dict['Zara']:
    Traceback (most recent call last):
      File "test.py", line 4, in <module>
        print "dict['Alice']: ", dict['Alice'];
    KeyError: 'Alice'




    修改字典

    向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #coding:utf8
      
    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
      
    dict['Age'] = 8; # update existing entry
    dict['School'] = "DPS School"; # Add new entry
      
      
    print "dict['Age']: ", dict['Age'];
    print "dict['School']: ", dict['School'];


    以上实例输出结果

    1

    2

    dict['Age']:  8
    dict['School']:  DPS School


    删除字典元素

    能删单一的元素也能清空字典,清空只需一项操作

    显示删除一个字典用del命令,如下实例


    #coding:utf8
      
    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
      
    del dict['Name']; # 删除键是'Name'的条目
    dict.clear();     # 清空词典所有条目
    del dict ;        # 删除词典
      
    print "dict['Age']: ", dict['Age'];
    print "dict['School']: ", dict['School'];


    但这会引发一个异常,因为用del后字典不再存在

    1

    2

    3

    4

    5

    dict['Age']:
    Traceback (most recent call last):
      File "test.py", line 8, in <module>
        print "dict['Age']: ", dict['Age'];
    TypeError: 'type' object is unsubscriptable


    注意:删除元素尽量用字典内置方法,不需要直接del,后面会讨论。

     

    字典键的特

    字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行

    两个重要的点需要记住

    1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例

    1

    2

    3

    4

    5

    #coding:utf8
      
    dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
      
    print "dict['Name']: ", dict['Name'];


    以上实例输出结果

    1

    dict['Name']:  Manni


    2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行,如下实例

    1

    2

    3

    4

    5

    #coding:utf8
      
    dict = {['Name']: 'Zara', 'Age': 7};
      
    print "dict['Name']: ", dict['Name'];


    以上实例输出结果

    1

    2

    3

    4

    Traceback (most recent call last):
      File "test.py", line 3, in <module>
        dict = {['Name']: 'Zara', 'Age': 7};
    TypeError: list objects are unhashable


    掌握字典相关方法

    1.1 添加元素:dict1[key] = value

    例如:

    wKioL1jkaPzj0RKcAAAYjT2WEXE220.png

    wKiom1jkaRbQmrVoAAAJmEk0XHw057.png

    1.2 items():变量解包:即将字典转化为键、值作为元组的列表

    例如:

    wKioL1jkaSmzKdrZAAAR7EAKYLg367.png

     

    wKiom1jkaTaSJVNcAAAKSVTkHHk939.png


    dict = {'Name': 'Zara', 'Age': 7}
     
    print "Value : %s" %  dict.items()
     
    Value : [('Age', 7), ('Name', 'Zara')]

        

                1.3 keys();键列表

    例如:

    wKioL1jkaVuyj4WOAAAV704FLTI780.png-wh_50

    wKiom1jkaYHCumO9AAAYIwLzEDo184.png

     

    1.4 values():值列表

    例如:

    wKiom1jkaaXASY-zAAAk7vMTdq4320.png

     

    wKioL1jkab6QFGspAAAXsoeIXK0167.png-wh_50


    1.5 has_key():判断是否存在某个键,返回结果true 或false

    例如:

    wKioL1jkafrQNLV-AAAR7EAKYLg774.png

     

    wKioL1jkageAFrE8AAAKSVTkHHk385.png


     

    1.6 len():取得字典中键值对个数

    例如:

    wKioL1jkai7Bet5cAAAV704FLTI866.png

     

    1.7         update():在原字典上合并字典,键相同时会被覆盖。

            例如:

            

    wKioL1jkaj_yUSWKAAAk7vMTdq4732.png


    1.8         get():取得某个键对应的值

    例如:

    wKiom1jkalihylIxAAAQrDjzS4A640.png-wh_50

    1.9         pop():弹出指定键对应的值

    wKiom1jkamXwzCXmAAAXw-PoZ_U048.png

    1.10         popitem():随机弹出键值对

    wKiom1jkanmgD7jiAAAWMgFW628741.png

    1.11         clear():清除所有元素

    例如:

    wKiom1jkaobjjqc9AAAWeexbPIs886.png

    2. 掌握字典的遍历:

    wKiom1jkaqqCSq6JAACKDFdbJGg908.png

     

    概念:Python的元组与列表类似,也是一种容器类型,不同之处在于元组的元素不能修改。
    元组使用小括号,列表使用方括号。

    Python的元组与列表类似,不同之处在于元组的元素不能修改

    特点支持异构;

      支持嵌套;

      不可变

    元组使用小括号,列表使用方括号

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

    如下实例

    1

    2

    3

    tup1 = ('physics', 'chemistry', 1997, 2000);
    tup2 = (1, 2, 3, 4, 5 );
    tup3 = "a", "b", "c", "d";


    创建空元


    tup1 =();


    元组中只包含一个元素时,需要在元素后面添加逗


    tup1 =(50,);


    元组与字符串类似,下标索引从0开始,可以进行截取,组合等



    访问元

    元组可以使用下标索引来访问元组中的值,如下实例:


     
    tup1 = ('physics', 'chemistry', 1997, 2000);
    tup2 = (1, 2, 3, 4, 5, 6, 7 );
     
    print "tup1[0]: ", tup1[0]
    print "tup2[1:5]: ", tup2[1:5]


    以上实例输出结果


    tup1[0]:  physics
    tup2[1:5]:  [2, 3, 4, 5]




    修改元

    元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:


     

    tup1 = (12, 34.56);
    tup2 = ('abc', 'xyz');
     
    # 以下修改元组元素操作是非法的。
    # tup1[0] = 100;
     
    # 创建一个新的元组
    tup3 = tup1 + tup2;
    print tup3;


    以上实例输出结果


    (12, 34.56, 'abc', 'xyz')


    删除元

    元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:


     

     
    tup = ('physics', 'chemistry', 1997, 2000);
     
    print tup;
    del tup;
    print "After deleting tup : "
    print tup;


    以上实例元组被删除后,输出变量会有异常信息,输出如下所示

    1

    2

    3

    4

    5

    6

    ('physics', 'chemistry', 1997, 2000)
    After deleting tup :
    Traceback (most recent call last):
      File "test.py", line 9, in <module>
        print tup;
    NameError: name 'tup' is not defined




    元组运算

    与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

    Python 表达式

    len((1, 2, 3))

    3

    计算元素个

    (1, 2, 3) + (4, 5, 6)

    (1, 2, 3, 4, 5, 6)

    ['Hi!'] * 4

    ('Hi!', 'Hi!', 'Hi!', 'Hi!')

    3 in (1, 2, 3)

    True

    元素是否存

    for x in (1, 2, 3): print x,

    1 2 3




    元组索引,截

    因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示

    元组


    L =('spam', 'Spam', 'SPAM!')


    Python 表达式

    L[2]

    'SPAM!'

    读取第三个元

    L[-2]

    'Spam'

    反向读取;读取倒数第二个元

    L[1:]

    ['Spam', 'SPAM!']

    截取元




    无关闭分隔

    任意对象 以逗号隔开,默认为元组,如下实例


    print 'abc', -4.24e93, 18+6.6j, 'xyz';
    x, y = 1, 2;
    print "Value of x , y : ", x,y;


    元组内置函

    Python元组包含了以下内置函

     

    序号

    方法及描

    1

    len(t)  计算元组元素个数

       

    wKioL1jka9WSrhgTAAAF2Q8Al7Y197.png


    2

    max(t) 返回元组中元素最大值

       

    wKiom1jka-XSNxFzAAAFtelhHks933.png


    3

    min(t) 返回元组中元素最小值

       

    wKioL1jkbBzSXlXGAAAF2IGklYU979.png


    4

    tuple(li) 将列表转换为元组

       

    wKiom1jkbCexwS7JAAAFMw7HAyY058.png


    5

    index():返回指定元素第一次出现的索引位置

    count():指定元素出现的次数

    例如:

      

    wKioL1jkbDLCN2A8AAAMdZWk480042.png

     

     


关键字

上一篇: Python实现macof

下一篇: python实例手册