zoukankan      html  css  js  c++  java
  • Python元组与字典详解

    Python 元组

      Python的元组与列表类似,不同之处在于元组的元素不能修改。
      元组使用小括号,列表使用方括号。
      元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
    如下实例:

    tup = ('abc', [12, 434, 54], 1231 )
    tup = (1, 2, 3, 4, 5 )
    tup = "a", "b", "c", "d"
    
    • 创建空元组
    tup = ()
    
    • 元组中只包含一个元素时,需要在元素后面添加逗号
    tup = (1,)
    

      原因:这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义。

    • 元组与字符串,列表类似,下标索引从0开始,可以进行截取,组合等。在此就不在赘述。

    修改元组

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

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

    删除元组

    tup = ('abc', [12, 434, 54], 1231 )
    print tup
    del tup
    print tup
    # 实例元组被删除后,输出变量会有异常信息
    # Traceback (most recent call last):
    #  File "<console>", line 1, in <module>
    #  NameError: name 'tup' is not defined
    

    元组内置函数

    方法 描述
    cmp(tuple1, tuple2) 比较两个元组元素。
    len(tuple) 计算元组元素个数。
    max(tuple) 返回元组中元素最大值。
    min(tuple) 返回元组中元素最小值。
    tuple(seq) 将列表转换为元组

    元组与列表的区别

    • 元组是不可变的, 而列表是可变的。

    • 元组通常由不同的数据,而列表是相同类型的数据队列。元组表示的是结构,而列表表示的是顺序。

    • 列表当作字典的key, 而元组可以。

    >>> a= (1, 2)
    >>> b = [3, 4]
    >>> c = {a: 'abc'}
    >>> d = {b: 'xyz'}
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
    TypeError: unhashable type: 'list'
    
    • 元组支持的操作比列表小, 所以元组会比列表稍稍快。

    Python 字典(Dictionary)

      字典是另一种可变容器模型,且可存储任意类型对象。类似于java中的map。
      字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    dict = {key1 : value1, key2 : value2 }
    

    键必须是唯一的,但值则不必。
    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
    一个简单的字典实例:

    dict={ 1:'a', 2:'b'}
    
    # {1: 'a', 2: 'b'}
    

    使用内建方法fromkeys()创建’默认‘字典,字典中元素具有相同的value(如果没有给出,默认为none)

    dict={}.fromkeys(('x','y'),12)
    #dict={'x':-1,'y':-1}
    

    访问字典里的值

    • 通过key访问value

    格式

    dict[key]

    或者
    dict.get(key)

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

    dict={ 1:'a', 2:'b'}
    dict[1]
    
    # 如果用字典里没有的键访问数据,会输出错误如下:
    dict['4']
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
    KeyError: '4'
    
    • 返回字典所有值的列表,dict.values()
    >>> dict={ 1:'a', 2:'b'}
    >>> dict.values()
    dict_values(['a', 'b'])
    

    访问字典中的key

    返回字典中键的列表  ** dict.keys()**
    dict.has_key(key)   如果键在字典dict里返回true,否则返回false,python3中已经去掉这个方法了。

    访问键值对

    遍历方式
    for r in dici #r是dict中的键值对
    dict.items() 以列表返回可遍历的(键, 值) 元组数组
    修改(更新)或添加
    dict[key1]=value1

    字典的更新

    dict.update(dict2) 将dict2中的值添加到dict中

    dict = {"a" : "apple", "b" : "banana"}
    >>> dict2={'c':"orange"}
    >>> dict.update(dict2)
    >>> dict
    {'a': 'apple', 'b': 'banana', 'c': 'orange'}
    

    删除

    • 按key删除
      del dict[key1]

    • 删除并返回

    • dict.pop(key1)
      删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

    • popitem()
      随机返回并删除字典中的一对键和值。

    • 删除所有项

    • dict.clear()

    • del dict

    字典常用方法

    方法 描述
    cmp(dict1, dict2) 比较两个字典元素。
    len(dict) 计算字典元素个数,即键的总数。
    str(dict) 输出字典可打印的字符串表示。
    type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
    dict.clear() 删除字典内所有元素
    dict.copy() 返回一个字典的浅复制
    dict.fromkeys(seq[, val])) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
    dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
    dict.items() 以列表返回可遍历的(键, 值) 元组数组
    dict.keys() 以列表返回一个字典所有的键
    dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    dict.update(dict2) 把字典dict2的键/值对更新到dict里
    dict.values() 以列表返回字典中的所有值
    pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    popitem() 随机返回并删除字典中的一对键和值。
  • 相关阅读:
    关于表格单元格溢出情况的处理(单行文本溢出或多行文本溢出)
    下拉树的公共插件(手写插件的方法)
    ztree树样式的设计
    Android学习笔记之Intent(2)
    Android学习笔记之Intent(1)
    Ajax
    Android学习笔记之ContentProvider
    Android学习笔记之Broadcast Receiver
    Android学习笔记之Service
    Android学习笔记之Intent
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7788170.html
Copyright © 2011-2022 走看看