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必须是可哈希的 可哈希表示 ...
随机推荐
- Android 神兵利器—— Adb 常用命令
总结的Android工具类文章: Android 神兵利器-- Adb 常用命令 Android 神兵利器-- Git 常用命令 Adb的全称为Android Debug Bridge,是管理andr ...
- 深入理解CSS定位中的堆叠z-index
× 目录 [1]定义 [2]堆叠规则 [3]堆叠上下文[4]兼容 前面的话 对于所有定位,最后都不免遇到两个元素试图放在同一位置上的情况.显然,其中一个必须盖住另一个.但,如何控制哪个元素放在上层,这 ...
- HTML5标签嵌套规则
× 目录 [1]分类 [2]子元素 [3]总结 前面的话 在html5中,<a>元素的子元素可以是块级元素,这在以前是被认为不符合规则的.本文将详细介绍html5的标签嵌套规则 分类 ht ...
- Oracle参数篇
1. ARCHIVE_LAG_TARGET forces a log switch after the specified amount of time elapses.有效值为0(disabled) ...
- C#预处理器指令 ,你造吗??? (●'◡'●)
什么是c#预处理指令?? 用于在 C# 源代码中嵌入的编译器命令. C#预处理器指令有哪些?? ↓↓↓这些就是预处理器指令啦 下面我们一一道来(●'◡'●) 1.#if ,#elif,#else,en ...
- Tools - VirtualBox
为CentOS虚拟机安装增强功能 启动CentOS虚拟机,点击"菜单 -> 设备 -> 安装增强功能". vboxadd的映像文件将会被挂载到虚拟机,在桌面也可以看到, ...
- Network - SSH
SSH(Secure Shell) https://wiki.wireshark.org/SSH SSH 协议与OpenSSH详解 http://my.oschina.net/liting/blo ...
- 12个来自 Codrops 的创新交互和动画效果
产品的用户体验是否被用户所接受,很大一部分取决于交互界面的设计,交互界面设计是整个产品设计中的核心,对于产品品质有着决定性的影响.这里集合了12个来自 Codrops 的创新的界面交互和动画效果,值得 ...
- SQLServer学习笔记系列5
一.写在前面的话 转眼又是一年清明节,话说“清明时节雨纷纷”,武汉的天气伴随着这个清明节下了一场暴雨,整个城市如海一样,朋友圈渗透着清明节武汉看海的节奏.今年又没有回老家祭祖,但是心里依然是怀念着那些 ...
- 五、BLE(下)
1.1 GATT server Service 通过走读代码, GATT Server作为一个GATT service,我是没有发现其发挥了多大功能,其负责处理的消息GATT_SERVER ...