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":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}
python学习笔记3(元组、字典)的更多相关文章
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- 【python学习笔记】4.字典:当索引不好用时
[python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...
- PYTHON 学习笔记3 元组、集合、字典
前言 在上一节的学习中.学习了基本的流程控制语句,if-elif-else for while 等,本节将拓展上一节学习过的一些List 列表当中操作的一些基本方法,以及元祖.序列等. 列表扩展 我们 ...
- python学习笔记整理——元组tuple
Python 文档学习笔记2 数据结构--元组和序列 元组 元组在输出时总是有括号的 元组输入时可能没有括号 元组是不可变的 通过分拆(参阅本节后面的内容)或索引访问(如果是namedtuples,甚 ...
- python学习笔记6(字典)
映射:键值对的关系,键(key)映射值(value) 字典是Python唯一的映射类型 >>> phonebook = {'} >>> phonebook {'} ...
- Python学习笔记3-Python元组、数组、字典集合的操作
在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...
- python学习笔记之三:字典,当索引不好用时
字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: phon ...
- python学习笔记(三)、字典
字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...
- python学习笔记07-元组 字典
元组: 元组里面的元素不可修改 创建后只可读 不可写 一个元素的时候 在后面加一个逗号 字典: 无序的 Python 中唯一的映射类型 采用键值对的形式存储数据 key必须是可哈希的 可哈希表示 ...
随机推荐
- MongoDB修改器总结
1"$set":用来制定一个字段值,若不存在,则创建: 一般用于点加一个字段 db.users.update({name:"joe"},{" ...
- Spring注意事项(各部分理解)
(1),每一个bean属性,就是一个普通的java类. 类有属性,有方法,如何交给容器管理.(注解的方式,xml方式配置) (2),通过Bean来实例化对象的方式 1.通过构造器(一般是无参的默认构造 ...
- JavaScript起点(严格模式深度了解)
格模式(Strict Mode)是ECMAScript5新增的功能,目前所有的主流浏览器的最新版本——包括IE10与Opera12——都支持严格模式,感兴趣的朋友可以了解下啊,希望本文对你有所帮助 严 ...
- hdu 1241 Oil Deposits (一次dfs搞定有某有)
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- Yii2的深入学习--自动加载机制
Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 ...
- Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version
Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification ...
- 轻松自动化---selenium-webdriver(python) (十一)
本节重点: 控制滚动条到底部 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户 ...
- oracle表数据类型number对应java中BIgDecimal转int
oracle中id为number类型,在java获取id时用getBigDecimal 相匹配, 如果想转换成int,重写model中的getInt方法: public Integer getInt( ...
- JS魔法堂:jQuery.Deferred(jQuery1.5-2.1)源码剖析
一.前言 jQuery.Deferred作为1.5的新特性出现在jQuery上,而jQuery.ajax函数也做了相应的调整.因此我们能如下的使用xhr请求调用,并实现事件处理函数晚绑定. var p ...
- Linux 小工具学习之(1)——Wget十例[翻译]
在本博文中我们将学习一下wget这个工具.wget可以使用HTTP.HTTPS.和FTP等常见网络协议来从万维网(WWW)获取文件(从它的名字来源也可以看出 World Wide Web Get -& ...