元组

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

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

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】-- 元组、字典的更多相关文章

  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. STL 源码分析 (SGI版本, 侯捷著)

    前言 源码之前,了无秘密 algorithm的重要性 效率的重要性 采用Cygnus C++ 2.91 for windows cygwin-b20.1-full2.exe 下载地址:http://d ...

  2. Yum编译安装Error Downloading Packages报错

    1:执行yum clean all 清除缓存目录下的软件包及旧的headers: 2:接着执行 yum list重新列出所有已经安装和可以安装的软件包: 3:重新执行上述命令,发现yum编译成功: 注 ...

  3. zabbix主机自动发现和监控

    在主机较多的时候,配置主机自动发现并加入监控可以代替手动的添加主机,减轻工作量,自动发现由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器.设备.可以根据需要,在对主 ...

  4. 初识Nginx及编译安装Nginx

    初识Nginx及编译安装Nginx 环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...

  5. 2017.8.23 postgresql的外键

    1.增加/删除外键的语法 ALTER TABLE t_permission ADD CONSTRAINT fkey FOREIGN KEY (fd_resid) REFERENCES t_resour ...

  6. 性能测试之Tomcat优化

    1.Tomcat最大连接数等配置   Tomcat的server.xml中Context元素的以下参数都是什么意思? <Connector port="8080"maxThr ...

  7. npm -D -S -g -i 以及安装技巧

    繁杂:npm install webpack 简洁:npm i webpack 重复性操作: npm i webpack npm i babel-core .... 简洁性操作: npm i webp ...

  8. FolderBrowserDialog 关于设置为单线程单元(STA)模式的问题

    当Main函数是这样的状态的时候,当打开FolderBrowserDialog控件的时候 ,报错 这里有两种解决办法,第一种,就是把main 上加[STAThread] 第二种是启用一个线程 Thre ...

  9. ubuntu+let's encrypt生成永久免费https证书 ubuntu+tomcat+nginx+let's encrypt

    1. 下载let's encrypt $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-ge ...

  10. Android中关于cursor类介绍

    使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿出来谈, ...