zoukankan      html  css  js  c++  java
  • python学习笔记3(元组、字典)

    Python中有三种内置的数据类型。dictionary(字典)、List(列表)和tuple(元组)。

    元组(tuple)

           只读列表(列表的值可以修改,元组的不可以)

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

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

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

    如下实例:  

    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)

    元组运算符

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

    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!']

    截取元素

    无关闭分隔符

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

    #!/usr/bin/python

    print 'abc', -4.24e93, 18+6.6j, 'xyz';

    x, y = 1, 2;

    print "Value of x , y : ", x,y;

    以上实例允许结果:

    abc -4.24e+93 (18+6.6j) xyz

    Value of x , y : 1 2

    元组内置函数

    Python元组包含了以下内置函数

    序号

    方法及描述

    1

    cmp(tuple1, tuple2)
    比较两个元组元素。

    2

    len(tuple)
    计算元组元素个数。

    3

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

    4

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

    5

    tuple(seq)
    将列表转换为元组。

     Dictionary(字典)

           字典dict,是Python唯一的标准mapping类型,也是内置在Python解释器中的。

    mapping object把一个可哈希的值(hashable value)映射到一个任意的object上。

    什么是可哈希的

    一个object是可哈希的(hashable), 是指这个object在其生存期内有一个不变的哈希值(hash value),即__hash__()方法返回的值。

    所有不可变的(immutable)内置object都是hashable的,比如string,tuple。所有可变的(mutable)内置容器都不是hashable的,比如list,dict(即没有__hash__()方法)。而所有自定义的类(use-defined class)对象都是可哈希的(hashable),并且只能和自己相等,其hashvalue为其id(object)的值,这里的id()为内置函数,CPython实现的时候取的对象在内存中的地址。

    字典Dictionary的key必须是可哈希的,所以tuple,string可以做key,而list不能做key。

    dict本身是一个类

    class dict(mapping)

    通俗地来讲,字典无非就是很多的数据,但是它有一个目录,可以通过目录中的一个简单值来找到与之相对于的详细信息。换句话来说,目录就是内容的一个特殊标示,即目录中的每一个字段,都会在内容中有与之相对应的详细信息。也就是说,目录中的每一个信息都是唯一的,与目录中的其他信息互不冲突。

    在Python的Dictionary不只是用于存储字符串。Dictionary的值可以是任意数据类型,包括字符串,整数,对象,甚至其它的 dictionary。在单个 dictionary里, dictionary的值并不需要全都是同一数据类型,可以根据需要混用和匹配。但是Python的key就比较严格了,它们可以是字符串,整数(我知道的只有这两种)。也可以在一个 dictionary中混用和配匹 key的数据类型。

     定义Dictionary

    dic = {"server":"apache", "database":"master"}每一个元素都是一个 key-value对, 整个元素集合用大括号括起来。可以通过 key来引用其值,但是不能通过值获取 key。所以d["server"]的值为 'apache'。

    修改Dictionary

    在一个 dictionary中不能有重复的key,但我们可以给一个存在的 key赋值,覆盖原有的值。如,我要将Dictionary dic中“server”的值改为“weblogic”,dic[“server”] =“weblogic”。

    添加key-value

    添加键值对其实很简单,举个简单的例子:我要在Dictionary中添加user=’root’的键值对,dic[“user”] = “root”。

    Dictionary中的常用方法:

    len(a)

    得到字典a中元素的个数

    a[k]

    取得字典a中键K所对应的值

    a[k] = v

    设定字典a中键k所对应的值成为v

    del a[k]

    使用 key从一个 dictionary中删除独立的元素。如,删除Dictionary dic中的user=’root’:del dic[“user”]

    a.clear()

    从一个 dictionary中清除所有元素。如,删除Dictionary dic中的所有元素:dic.clear()

    a.copy()

    得到字典副本

    k in a

    字典中存在键k则为返回True,没有则返回False

    k not in a

     字典中不存在键k则为返回true,反之返回False

    a.has_key(k)

    判断字典a中是否含有键k

    a.items()

    得到字典a中的键—值对list

    a.keys()

    得到字典a中键的list

    a.update([b])

    从b字典中更新a字典,如果键相同则更新,a中不存在则追加.

    a.fromkeys(seq[, value])

    创建一个新的字典,其中的键来自sql,值来自value

    a.values()

    得到字典a中值的list

    a.get(k[, x])

    从字典a中取出键为k的值,如果没有,则返回x

    a.setdefault(k[, x])

    将键为k的值设为默认值x。如果字典a中存在k,则返回k的值,如果不存在,向字典中添加k-x键值对,并返回值x

    a.pop(k[, x])

    取出字典a中键k的值,并将其从字典a中删除,如果字典a中没有键k,则返回值x

    a.popitem()

    取出字典a中键值对,并将其从字典a中删除

    a.iteritems()

    返回字典a所有键-值对的迭代器。

    a.iterkeys()

    返回字典a所有键的迭代器。

    a.itervalues()

    返回字典a所有值的迭代器。

     Dictionary中的key值是大小写敏感的。并且在同一个dictionary中不能有重复的key值。并且,Dictionary中没有元素顺序的概念。

    字典两大特点:无序,键唯一

    创建字典
    1
    dic={"name":"liu","age":"23","hobby":"python",}
    dic = dict((('name','liu'),('age','23'),))
    print(dic)
    2
     dic = dict([['name','liu'],['age','23'],])
     print(dic)
    字典的操作

    1
     dic={'name':'liu'}
     dic['age']=3
     print(dic)
    2   如果键没有,加入,返回值为增加对应的值
    dic={'name':'liu'}
    a=dic.setdefault('age',34)
    print(dic)
    print(a)
    如果键没有,则不做修改,返回值为原来字典的
     dic={'name':'liu'}
     a=dic.setdefault('name',34)
     print(dic)
     print(a)
    3.update  dic改变,dic1不变
     dic={'name':'liu'}
     dic1={'age':23}
     dic.update(dic1)
     print(dic)
     print(dic1)


    通过键查找
    dic={'name':'liu','age':45}
    print(dic['name'])
    print(list (dic.keys () ))     查字典中所有的键
    dic.values()                查中字典中所有的值
    dic.item                    将所有的键值对以元组的方式拿出

     dic={'name':'liu'}
     dic['name']='alex'
     print(dic)
    删除
    dic={'name':'liu','age':23}
    del dic['name']        按键删除一个键值对
    print(dic)

    del dic                删除整个字典
    print(dic)
    其他操作及涉及到的方法
    创建
    dic=dict.fromkeys(['a','b','c'],'d')
    print(dic)
    字典的排序
    根据键排序
    dic={'name':'liu','hobby':'python'}
    print(sorted(dic.items()))
    根据值排序
    print(sorted(dic.values()))
    字典的遍历
    dic={'name':'liu','hobby':'python'}
    for i in dic:
         print(i,dic[i])
    两种方法值一样建议用第一种
    for i,v in dic.items():
        print(i,v)

    字典的嵌套

    av_catalog = {

         "欧美":{

             "www.youporn.com": ["很多免费的,世界最大的","质量一般"],

             "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],

             "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],

             "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]

         },

         "日韩":{

             "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]

         },

         "大陆":{

             "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]

         }

     }

  • 相关阅读:
    1级搭建类106-Oracle 19c 单实例 FS(华为云)公开
    table表格超出部分显示省略号
    hibernate自动创建表报表不存在
    TCP/IP协议三次握手与四次挥手
    struts2运行流程
    Errors occurred during the build. Errors running builder 'Validation' on pro
    ads查询结果中文显示方框问题
    plsql登录报错身份证明检索失败
    隐藏域传值到后台controller
    获取select被选中的option的值
  • 原文地址:https://www.cnblogs.com/lst1010/p/5801374.html
Copyright © 2011-2022 走看看