元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等

1.访问元祖

  1. >>> name = ('a','b','c','d')
  2. #下标值跟列表一样,也是从0开始
  3. >>> name[0]
  4. 'a'
  5. >>> name[1]
  6. 'b'
  7. #访问最后一个元素
  8. >>> name[-1]
  9. 'd'

2,count(统计) 与 index(索引)

  1. # count 统计元素数量
  2. name = ('a','b','c','a')
  3. name.count('a') #
  4.  
  5. # index 查看元素下标
  6. name = ('a','b','c','a')
  7. name.index('b')#

3、修改元组 删除元祖

  1. #元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
  2. tup1 = (12, 34.56);
  3. tup2 = ('abc', 'xyz')
  4.  
  5. # 以下修改元组元素操作是非法的。
  6. # tup1[0] = 100
  7.  
  8. # 创建一个新的元组
  9. tup3 = tup1 + tup2;
  10. print (tup3) #(12, 34.56, 'abc', 'xyz')
  11.  
  12. #元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
  13. #!/usr/bin/python3
  14.  
  15. tup = ('Google', 'Runoob', 1997, 2000)
  16.  
  17. print (tup)
  18. del tup;
  19. print ("删除后的元组 tup : ")
  20. print (tup) # NameError: name 'tup' is not defined

小结:

①元组中的数据不可以被修改,不可以被添加,不可以被删除(当然除非是元组中嵌套列表或者字典,列表和字典中的值是可以被更改的)

②元组的获取元素的方式和列表一样,都是通过下标值访问,下标值都是从0开始

③由于元组只能读,不能写,所以元组只有count和index两个方法

④元组的切片功能和列表一样

字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

  1. d = {key1 : value1, key2 : value2 }

一、特征:

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

1、字典是无序的;

2,字典的key是唯一的,不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

  1. dict = {'Name': 'QQ', 'Age': 7, 'Name': 'DD'}
  2.  
  3. print ("dict['Name']: ", dict['Name']) # DD

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

  1. dict = {['Name']: 'Runoob', 'Age': 7}
  2.  
  3. print ("dict['Name']: ", dict['Name']) # TypeError: unhashable type: 'list'

二、基本用法:增加、查看、修改、删除

1、增加

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #新增
  3. >>> stu_info["wanger"] = 30
  4. #输出结果
  5. >>> stu_info
  6. {'wanger': 30, 'lisi': 18, 'zhangsan': 23, 'qigao': 18}

2、修改

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #修改'qigao'对应的value值,由18改为23
  3. >>> stu_info["qigao"] = 23
  4. #输出
  5. >>> stu_info
  6. {'wanger': 30, 'lisi': 18, 'zhangsan': 23, 'qigao': 23}

3、删除(del、pop、popitem)

del

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. >>> del stu_info['qigao']
  3. #结果输出
  4. >>> stu_info
  5. {'zhangsan': 23, 'lisi': 18}

注:如果是del stu_info的话,则是删除stu_info这个变量

pop

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #删除时给出提示
  3. >>> stu_info.pop("qigao")
  4. 18
  5. #输出结果
  6. >>> stu_info
  7. {'zhangsan': 23, 'lisi': 18}

popitem

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #随机删除的元素
  3. >>> stu_info.popitem()
  4. ('lisi', 18)
  5. #输出结果
  6. >>> stu_info
  7. {'zhangsan': 23, 'qigao': 18}

4、查

通过key查找value

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #存在key返回value
  3. >>> stu_info["qigao"]
  4. 18
  5. #不存在key提示报错
  6. >>> stu_info["wanger"]
  7. Traceback (most recent call last):
  8. File "<input>", line 1, in <module>
  9. KeyError: 'wanger'

通过get(key) 查找value

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. #存在则返回对应的value
  3. >>> print(stu_info.get("qigao"))
  4. 18
  5. #不存在返回None
  6. >>> print(stu_info.get("wanger"))
  7. None

注:get(k)不存在key值,则返回None,通过key直接访问会报错,所以建议推荐用get(k)这个方法获取value

通过key in 字典判断  key是否存在与字典中

  1. >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
  2. >>> "qigao" in stu_info #标准用法,在Python3和Python2.7都可以用
  3. True

5、多级字典嵌套及操作

  1. av_catalog = {
  2. "欧美":{
  3. "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
  4. "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
  5. "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
  6. "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
  7. },
  8. "日韩":{
  9. "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
  10. },
  11. "大陆":{
  12. "":["全部免费,真好,好人一生平安","服务器在国外,慢"]
  13. }
  14. }
  15.  
  16. av_catalog["大陆"][""][1] += ",可以用爬虫爬下来"
  17. print(av_catalog["大陆"][""])
  18. #ouput
  19. ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

三、字典的内置方法:

  1. #clear() 删除字典内所有元素
  2. dict = {'Name': 'Zara', 'Age': 7}
  3.  
  4. print ("字典长度 : %d" % len(dict))
  5. dict.clear()
  6. print ("字典删除后长度 : %d" % len(dict))
  7.  
  8. #字典长度 : 2
  9. #字典删除后长度 : 0
  10.  
  11. #--------------------------------------------------------------------
  12.  
  13. #copy() 返回一个字典的浅复制
  14. dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
  15.  
  16. dict2 = dict1.copy()
  17. print ("新复制的字典为 : ",dict2) #新复制的字典为 : {'Age': 7, 'Name': 'Runoob', 'Class': 'First'}
  18.  
  19. #--------------------------------------------------------------------
  20. # fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
  21.  
  22. seq = ('name', 'age', 'sex')
  23.  
  24. dict = dict.fromkeys(seq)
  25. print ("新的字典为 : %s" % str(dict))
  26.  
  27. dict = dict.fromkeys(seq, 10)
  28. print ("新的字典为 : %s" % str(dict))
  29. #新的字典为 : {'age': None, 'name': None, 'sex': None}
  30. #新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
  31.  
  32. #--------------------------------------------------------------------
  33. #get() 函数返回指定键的值,如果值不在字典中返回默认值。
  34. dict = {'Name': 'Runoob', 'Age': 27}
  35.  
  36. print ("Age 值为 : %s" % dict.get('Age'))
  37. print ("Sex 值为 : %s" % dict.get('Sex', "NA"))
  38.  
  39. #Age 值为 : 27
  40. #Sex 值为 : NA
  41.  
  42. #--------------------------------------------------------------------
  43. # items() 方法以列表返回可遍历的(键, 值) 元组数组。
  44. dict = {'Name': 'Runoob', 'Age': 7}
  45.  
  46. print ("Value : %s" % dict.items())
  47. #Value : dict_items([('Age', 7), ('Name', 'Runoob')])
  48.  
  49. #--------------------------------------------------------------------
  50.  
  51. keys(), values()方法以列表返回一个字典所有的键,值
  52. dict = {'Name': 'QQ', 'Age': 7}
  53.  
  54. print ("字典所有的键为 : %s" % dict.keys())
  55. print ("字典所有值为 : ", list(dict.values()))
  56. #字典所有的键为 : dict_keys(['Age', 'Name'])
  57. #"字典所有值为 : ", ["QQ","7"]
  58.  
  59. #--------------------------------------------------------------------
  60. #setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值
  61. dict = {'Name': 'Runoob', 'Age': 7}
  62.  
  63. print ("Age 键的值为 : %s" % dict.setdefault('Age', None))
  64. print ("Sex 键的值为 : %s" % dict.setdefault('Sex', None))
  65. print ("新字典为:", dict)
  66. #Age 键的值为 : 7
  67. #Sex 键的值为 : None
  68. #新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}
  69.  
  70. #--------------------------------------------------------------------
  71. #update() 函数把字典dict2的键/值对更新到dict里。
  72. dict = {'Name': 'Runoob', 'Age': 7}
  73. dict2 = {'Sex': 'female' }
  74.  
  75. dict.update(dict2)
  76. print ("更新字典 dict : ", dict)
  77. #更新字典 dict : {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}

四、循环字典

方法1:

  1. for key in dict:
  2. print(key,dict[key])

方法2:

  1. for k,v in info.items(): #会先把dict转成list,数据量大时莫用
  2. print(k,v)

注:

①方法1的效率比方法2的效率高很多

②方法1是直接通过key取value

③方法2是先把字典转换成一个列表,再去取值

④当数据量比较大的时候,用第二种方法时,字典转换成列表的这个过程需要花大量的时间老转换,当然数据量不大,没有关系,效率差不多

【python】-- 元组、字典的更多相关文章

  1. python元组-字典-集合及其内置方法(下)

    列表补充 补充方法 清空列表 clear # clear 清空列表 l = [1, 2, 3, 4, 4] print(l.clear()) # clear没有返回值(None) print(l) # ...

  2. [转载]Python 元组、列表、字典、文件

    python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...

  3. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  4. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  5. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

  6. Python元组与字典详解

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

  7. Python 学习笔记(九)Python元组和字典(三)

    字典常用方法 copy() 返回一个字典的浅复制 示例:浅拷贝d.copy() 深拷贝引入import copy   copy.deepcopy() >>> help(dict.co ...

  8. Python 学习笔记(九)Python元组和字典(一)

    Python 元组 元组的定义  元组(tuple)是一种Python对象类型,元组也是一种序列 Python中的元组与列表类似,不同之处元组的元素不能修改 元组使用小括号,列表使用方括号 元组的创建 ...

  9. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  10. 【277】◀▶ Python 列表/元组/字典说明

    目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...

随机推荐

  1. asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付

    下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...

  2. 计算机速度GHz等于每秒多少次

    这个是没有对比关系的.需要看处理器的微指令.计算机的GHz指的是CPU的时钟频率,不同的指令需要的时钟个数是不同的,列如,从内存读一个数据,一般需要4个时钟周期,而进行一次8位数的加法运算,一般需要1 ...

  3. 2017.7.18 windows下ELK环境搭建

    参考来自:Windows环境下ELK平台的搭建 另一篇博文:2017.7.18 linux下ELK环境搭建 0 版本说明 因为ELK从5.0开始只支持jdk 1.8,但是项目中使用的是JDK 1.7, ...

  4. (总结)Linux下的暴力密码在线破解工具Hydra详解

    (总结)Linux下的暴力密码在线破解工具Hydra详解 学习了:https://blog.csdn.net/yafeichang/article/details/53502869

  5. Effective C++--经验条款

    高效C++ --模板与泛型编程 在C++中模板体现的是编译期多态,virtual体现的是执行期多态. 关于typename的双重含义: 在声明template參数时,不论使用keywordclass或 ...

  6. Material Design (二),TextInputLayout的使用

    前言  一般登录注冊界面都须要EditText这个控件来让用户输入信息,同一时候我们通常会设置一个标签(使用TextView)和EditText的hint属性来提示用户输入的内容,而设计库中高级组件T ...

  7. Transform.Translate 平移

    function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void Description描述 Mov ...

  8. Step 2---有关Github的几个问题

    1.取得项目的Git仓库的方式 第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库. 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行: $ git init 初始化 ...

  9. maven nexus myeclipse 学习

    http://b-l-east.iteye.com/blog/1246482 这篇文章比较详细的介绍了 nexus 本地仓库以及与maven的配合使用 http://blog.csdn.net/arv ...

  10. ssh隧道远程连接mysql

    有时候比如一些云主机,没有开放3306端口,这里可以用ssh隧道来连接数据库,更加安全 注意点: 1.本地ssh可以登录远程服务器,(密码或者秘钥) 2.远程数据库需要赋权限给隧道端的ip 命令: s ...