设为首页 收藏本站
查看: 2357|回复: 0

[经验分享] Python元组与字典

[复制链接]

尚未签到

发表于 2018-8-8 09:55:34 | 显示全部楼层 |阅读模式
  python字典
  概念:字典是另一种可变容器类型,且可存储任意类型对象,如其他容器类型。
  字典由键和对应值成对组成。字典也被称作关联数组或哈希表。理解好一一对应的
  关系很重要
  1. 掌握字典类型
  a) 字典的特点
  无序: 通过键实现元素存取,故无序
  可变:可以通过键进行改变值
  异构:支持多种数据类型
  嵌套:可以在键值对中的值部分出现字典
  b) 定义字典:
  ii. 方法一:{key1:value1,key2:value2,...}
  iii. 方法二:dict()内置函数:指定键值
  例:d2=dict(name="jerry",age="45",gender="m")
  iv. 关键点:
  键与值用冒号“:”分开;
  项与项用逗号“,”分开;
  字典中的键必须是唯一的,而值可以不唯一
  实例:
dict = {'Alice': '16', ' MadKing ': '17', 'Cecil': '18'}dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 } 嵌套定义  访问字典里的值
  把相应的键放入熟悉的方括弧,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};  

  
print "dict['Name']: ", dict['Name'];
  
print "dict['Age']: ", dict['Age'];
DSC0000.png

  如果用字典里没有的键访问数据,会输出错误如下:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};  

  
print "dict['Alice']: ", dict['Alice'];
  以上实例输出结果:
  1
  2
  3
  4
  5
dict['Zara']:  
Traceback (most recent call last):
  
  File "test.py", line 4, in <module>
  
    print "dict['Alice']: ", dict['Alice'];
  
KeyError: 'Alice'
  修改字典
  向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
#coding:utf8  

  
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
  

  
dict['Age'] = 8; # update existing entry
  
dict['School'] = "DPS School"; # Add new entry
  

  

  
print "dict['Age']: ", dict['Age'];
  
print "dict['School']: ", dict['School'];
  以上实例输出结果:
  1
  2
dict['Age']:  8  
dict['School']:  DPS School
  删除字典元素
  能删单一的元素也能清空字典,清空只需一项操作。
  显示删除一个字典用del命令,如下实例:
#coding:utf8  

  
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
  

  
del dict['Name']; # 删除键是'Name'的条目
  
dict.clear();     # 清空词典所有条目
  
del dict ;        # 删除词典
  

  
print "dict['Age']: ", dict['Age'];
  
print "dict['School']: ", dict['School'];
  但这会引发一个异常,因为用del后字典不再存在:
  1
  2
  3
  4
  5
dict['Age']:  
Traceback (most recent call last):
  
  File "test.py", line 8, in <module>
  
    print "dict['Age']: ", dict['Age'];
  
TypeError: 'type' object is unsubscriptable
  注意:删除元素尽量用字典内置方法,不需要直接del,后面会讨论。
  字典键的特性
  字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
  两个重要的点需要记住:
  1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
  1
  2
  3
  4
  5
#coding:utf8  

  
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
  

  
print "dict['Name']: ", dict['Name'];
  以上实例输出结果:
  1
dict['Name']:  Manni  2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行,如下实例:
  1
  2
  3
  4
  5
#coding:utf8  

  
dict = {['Name']: 'Zara', 'Age': 7};
  

  
print "dict['Name']: ", dict['Name'];
  以上实例输出结果:
  1
  2
  3
  4
Traceback (most recent call last):  
  File "test.py", line 3, in <module>
  
    dict = {['Name']: 'Zara', 'Age': 7};
  
TypeError: list objects are unhashable
  掌握字典相关方法
  1.1 添加元素:dict1[key] = value
  例如:
DSC0001.png

DSC0002.png

  1.2 items():变量解包:即将字典转化为键、值作为元组的列表
  例如:
DSC0003.png

DSC0004.png

dict = {'Name': 'Zara', 'Age': 7}  

  
print "Value : %s" %  dict.items()
  

  
Value : [('Age', 7), ('Name', 'Zara')]
  1.3 keys();键列表
  例如:
DSC0005.png

DSC0006.png

  1.4 values():值列表
  例如:
DSC0007.png

DSC0008.png

  1.5 has_key():判断是否存在某个键,返回结果true 或false
  例如:
DSC0009.png

DSC00010.png

  1.6 len():取得字典中键值对个数
  例如:
DSC00011.png

  1.7         update():在原字典上合并字典,键相同时会被覆盖。
  例如:
DSC00012.png

  1.8         get():取得某个键对应的值
  例如:
DSC00013.png

  1.9         pop():弹出指定键对应的值
DSC00014.png

  1.10         popitem():随机弹出键值对
DSC00015.png

  1.11         clear():清除所有元素
  例如:
DSC00016.png

  2. 掌握字典的遍历:
DSC00017.png

概念:Python的元组与列表类似,也是一种容器类型,不同之处在于元组的元素不能修改。  
元组使用小括号,列表使用方括号。
  Python的元组与列表类似,不同之处在于元组的元素不能修改。
  特点:支持异构;
  支持嵌套;
  不可变
  元组使用小括号,列表使用方括号。
  元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
  如下实例:
  1
  2
  3
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;
  以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
  1
  2
  3
  4
  5
  6
('physics', 'chemistry', 1997, 2000)  
After deleting tup :
  
Traceback (most recent call last):
  
  File "test.py", line 9, in <module>
  
    print tup;
  
NameError: name 'tup' is not defined
  元组运算符
  与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
  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!']
  截取元素
  无关闭分隔符
  任意对象 以逗号隔开,默认为元组,如下实例:
print 'abc', -4.24e93, 18+6.6j, 'xyz';  
x, y = 1, 2;
  
print "Value of x , y : ", x,y;
  元组内置函数
  Python元组包含了以下内置函数
  序号
  方法及描述
  1
  len(t)  计算元组元素个数。
DSC00018.png

  2
  max(t) 返回元组中元素最大值。
DSC00019.png

  3
  min(t) 返回元组中元素最小值。
DSC00020.png

  4
  tuple(li) 将列表转换为元组
DSC00021.png

  5
  index():返回指定元素第一次出现的索引位置
  count():指定元素出现的次数
  例如:
DSC00022.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548508-1-1.html 上篇帖子: python3 多线程编程 下篇帖子: vim支持+python和+python3切换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表