【python】-- 元组、字典
元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等
1.访问元祖
- >>> name = ('a','b','c','d')
- #下标值跟列表一样,也是从0开始
- >>> name[0]
- 'a'
- >>> name[1]
- 'b'
- #访问最后一个元素
- >>> name[-1]
- 'd'
2,count(统计) 与 index(索引)
- # count 统计元素数量
- name = ('a','b','c','a')
- name.count('a') #
- # index 查看元素下标
- name = ('a','b','c','a')
- name.index('b')#
3、修改元组 删除元祖
- #元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
- tup1 = (12, 34.56);
- tup2 = ('abc', 'xyz')
- # 以下修改元组元素操作是非法的。
- # tup1[0] = 100
- # 创建一个新的元组
- tup3 = tup1 + tup2;
- print (tup3) #(12, 34.56, 'abc', 'xyz')
- #元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
- #!/usr/bin/python3
- tup = ('Google', 'Runoob', 1997, 2000)
- print (tup)
- del tup;
- print ("删除后的元组 tup : ")
- print (tup) # NameError: name 'tup' is not defined
小结:
①元组中的数据不可以被修改,不可以被添加,不可以被删除(当然除非是元组中嵌套列表或者字典,列表和字典中的值是可以被更改的)
②元组的获取元素的方式和列表一样,都是通过下标值访问,下标值都是从0开始
③由于元组只能读,不能写,所以元组只有count和index两个方法
④元组的切片功能和列表一样
字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
- d = {key1 : value1, key2 : value2 }
一、特征:
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行
1、字典是无序的;
2,字典的key是唯一的,不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
- dict = {'Name': 'QQ', 'Age': 7, 'Name': 'DD'}
- print ("dict['Name']: ", dict['Name']) # DD
3、键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
- dict = {['Name']: 'Runoob', 'Age': 7}
- print ("dict['Name']: ", dict['Name']) # TypeError: unhashable type: 'list'
二、基本用法:增加、查看、修改、删除
1、增加
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #新增
- >>> stu_info["wanger"] = 30
- #输出结果
- >>> stu_info
- {'wanger': 30, 'lisi': 18, 'zhangsan': 23, 'qigao': 18}
2、修改
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #修改'qigao'对应的value值,由18改为23
- >>> stu_info["qigao"] = 23
- #输出
- >>> stu_info
- {'wanger': 30, 'lisi': 18, 'zhangsan': 23, 'qigao': 23}
3、删除(del、pop、popitem)
del
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- >>> del stu_info['qigao']
- #结果输出
- >>> stu_info
- {'zhangsan': 23, 'lisi': 18}
注:如果是del stu_info的话,则是删除stu_info这个变量
pop
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #删除时给出提示
- >>> stu_info.pop("qigao")
- 18
- #输出结果
- >>> stu_info
- {'zhangsan': 23, 'lisi': 18}
popitem
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #随机删除的元素
- >>> stu_info.popitem()
- ('lisi', 18)
- #输出结果
- >>> stu_info
- {'zhangsan': 23, 'qigao': 18}
4、查
通过key查找value
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #存在key返回value
- >>> stu_info["qigao"]
- 18
- #不存在key提示报错
- >>> stu_info["wanger"]
- Traceback (most recent call last):
- File "<input>", line 1, in <module>
- KeyError: 'wanger'
通过get(key) 查找value
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- #存在则返回对应的value
- >>> print(stu_info.get("qigao"))
- 18
- #不存在返回None
- >>> print(stu_info.get("wanger"))
- None
注:get(k)不存在key值,则返回None,通过key直接访问会报错,所以建议推荐用get(k)这个方法获取value
通过key in 字典判断 key是否存在与字典中
- >>> stu_info = {"zhangsan":23,"lisi":18,"qigao":18}
- >>> "qigao" in stu_info #标准用法,在Python3和Python2.7都可以用
- True
5、多级字典嵌套及操作
- av_catalog = {
- "欧美":{
- "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
- "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
- "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
- "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
- },
- "日韩":{
- "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
- },
- "大陆":{
- "":["全部免费,真好,好人一生平安","服务器在国外,慢"]
- }
- }
- av_catalog["大陆"][""][1] += ",可以用爬虫爬下来"
- print(av_catalog["大陆"][""])
- #ouput
- ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
三、字典的内置方法:
- #clear() 删除字典内所有元素
- dict = {'Name': 'Zara', 'Age': 7}
- print ("字典长度 : %d" % len(dict))
- dict.clear()
- print ("字典删除后长度 : %d" % len(dict))
- #字典长度 : 2
- #字典删除后长度 : 0
- #--------------------------------------------------------------------
- #copy() 返回一个字典的浅复制
- dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
- dict2 = dict1.copy()
- print ("新复制的字典为 : ",dict2) #新复制的字典为 : {'Age': 7, 'Name': 'Runoob', 'Class': 'First'}
- #--------------------------------------------------------------------
- # fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
- seq = ('name', 'age', 'sex')
- dict = dict.fromkeys(seq)
- print ("新的字典为 : %s" % str(dict))
- dict = dict.fromkeys(seq, 10)
- print ("新的字典为 : %s" % str(dict))
- #新的字典为 : {'age': None, 'name': None, 'sex': None}
- #新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
- #--------------------------------------------------------------------
- #get() 函数返回指定键的值,如果值不在字典中返回默认值。
- dict = {'Name': 'Runoob', 'Age': 27}
- print ("Age 值为 : %s" % dict.get('Age'))
- print ("Sex 值为 : %s" % dict.get('Sex', "NA"))
- #Age 值为 : 27
- #Sex 值为 : NA
- #--------------------------------------------------------------------
- # items() 方法以列表返回可遍历的(键, 值) 元组数组。
- dict = {'Name': 'Runoob', 'Age': 7}
- print ("Value : %s" % dict.items())
- #Value : dict_items([('Age', 7), ('Name', 'Runoob')])
- #--------------------------------------------------------------------
- keys(), values()方法以列表返回一个字典所有的键,值
- dict = {'Name': 'QQ', 'Age': 7}
- print ("字典所有的键为 : %s" % dict.keys())
- print ("字典所有值为 : ", list(dict.values()))
- #字典所有的键为 : dict_keys(['Age', 'Name'])
- #"字典所有值为 : ", ["QQ","7"]
- #--------------------------------------------------------------------
- #setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值
- dict = {'Name': 'Runoob', 'Age': 7}
- print ("Age 键的值为 : %s" % dict.setdefault('Age', None))
- print ("Sex 键的值为 : %s" % dict.setdefault('Sex', None))
- print ("新字典为:", dict)
- #Age 键的值为 : 7
- #Sex 键的值为 : None
- #新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}
- #--------------------------------------------------------------------
- #update() 函数把字典dict2的键/值对更新到dict里。
- dict = {'Name': 'Runoob', 'Age': 7}
- dict2 = {'Sex': 'female' }
- dict.update(dict2)
- print ("更新字典 dict : ", dict)
- #更新字典 dict : {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}
四、循环字典
方法1:
- for key in dict:
- print(key,dict[key])
方法2:
- for k,v in info.items(): #会先把dict转成list,数据量大时莫用
- print(k,v)
注:
①方法1的效率比方法2的效率高很多
②方法1是直接通过key取value
③方法2是先把字典转换成一个列表,再去取值
④当数据量比较大的时候,用第二种方法时,字典转换成列表的这个过程需要花大量的时间老转换,当然数据量不大,没有关系,效率差不多
【python】-- 元组、字典的更多相关文章
- python元组-字典-集合及其内置方法(下)
列表补充 补充方法 清空列表 clear # clear 清空列表 l = [1, 2, 3, 4, 4] print(l.clear()) # clear没有返回值(None) print(l) # ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- Python元组与字典详解
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...
- Python 学习笔记(九)Python元组和字典(三)
字典常用方法 copy() 返回一个字典的浅复制 示例:浅拷贝d.copy() 深拷贝引入import copy copy.deepcopy() >>> help(dict.co ...
- Python 学习笔记(九)Python元组和字典(一)
Python 元组 元组的定义 元组(tuple)是一种Python对象类型,元组也是一种序列 Python中的元组与列表类似,不同之处元组的元素不能修改 元组使用小括号,列表使用方括号 元组的创建 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- 【277】◀▶ Python 列表/元组/字典说明
目录: 前言 一.访问列表中的值 二.更新列表 三.删除列表元素 四.Python 列表脚本操作符 五.Python 列表函数 & 方法 参考:Python 列表(List)使用说明 列表截取 ...
随机推荐
- asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付
下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...
- 计算机速度GHz等于每秒多少次
这个是没有对比关系的.需要看处理器的微指令.计算机的GHz指的是CPU的时钟频率,不同的指令需要的时钟个数是不同的,列如,从内存读一个数据,一般需要4个时钟周期,而进行一次8位数的加法运算,一般需要1 ...
- 2017.7.18 windows下ELK环境搭建
参考来自:Windows环境下ELK平台的搭建 另一篇博文:2017.7.18 linux下ELK环境搭建 0 版本说明 因为ELK从5.0开始只支持jdk 1.8,但是项目中使用的是JDK 1.7, ...
- (总结)Linux下的暴力密码在线破解工具Hydra详解
(总结)Linux下的暴力密码在线破解工具Hydra详解 学习了:https://blog.csdn.net/yafeichang/article/details/53502869
- Effective C++--经验条款
高效C++ --模板与泛型编程 在C++中模板体现的是编译期多态,virtual体现的是执行期多态. 关于typename的双重含义: 在声明template參数时,不论使用keywordclass或 ...
- Material Design (二),TextInputLayout的使用
前言 一般登录注冊界面都须要EditText这个控件来让用户输入信息,同一时候我们通常会设置一个标签(使用TextView)和EditText的hint属性来提示用户输入的内容,而设计库中高级组件T ...
- Transform.Translate 平移
function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void Description描述 Mov ...
- Step 2---有关Github的几个问题
1.取得项目的Git仓库的方式 第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库. 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行: $ git init 初始化 ...
- maven nexus myeclipse 学习
http://b-l-east.iteye.com/blog/1246482 这篇文章比较详细的介绍了 nexus 本地仓库以及与maven的配合使用 http://blog.csdn.net/arv ...
- ssh隧道远程连接mysql
有时候比如一些云主机,没有开放3306端口,这里可以用ssh隧道来连接数据库,更加安全 注意点: 1.本地ssh可以登录远程服务器,(密码或者秘钥) 2.远程数据库需要赋权限给隧道端的ip 命令: s ...