元组和字典
1.元组
元组和列表相似,不同之处在于元组的元素不能被修改,元组使用小括号。
创建元组只需在括号中添加元素,并使用逗号隔开,注意,当元组中只有一个元素时,后面需添加一个逗号,否则会被当做运算符使用。
tup1=('python','hello',2000) tup2=(2,) tup3=() #空元组 print(type(tup1)) 得到<class 'tuple'>
元组的运算符
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 | 迭代 |
元组内置函数
序号 | 方法及描述 | 实例 |
---|---|---|
1 | len(tuple) 计算元组元素个数。 |
>>> tuple1 = ('Google', 'Runoob', 'Taobao') >>> len(tuple1) 3 >>> |
2 | max(tuple) 返回元组中元素最大值。 |
>>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>> |
3 | min(tuple) 返回元组中元素最小值。 |
>>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>> |
4 | tuple(seq) 将列表转换为元组。 |
>>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu') |
字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
(1)访问字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) #输出得到 dict['Name']:Runoob
(2)修改字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict['Age']=8 print (dict) #得到 {'Name': 'Runoob', 'Age': 7, 'Class': 'First','Age':8}
(3)删除字典元素
能删单一的元素也能清空字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} del dict['Name'] # 删除键 'Name' dict.clear() # 清空字典 del dict # 删除字典
但这会引发一个异常,因为用执行 del 操作后字典不再存在
(4)字典键的特性
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 以列表返回一个字典所有的键 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 以列表返回字典中的所有值 |
11 | pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)。 |
练习:
将上次的通讯管理系统修改为字典模式:
phones={'1399413914':'帅比'} while True: print('== == == =通讯录管理系统 == == == =') print('1.增加姓名和手机') print('2.删除姓名') print('3.修改手机') print('4.查询所有用户') print('5.根据姓名查找手机号') print('6.退出') print('== == == == == == == == == == == == == ==') i=int(input('请选择:')) if i==1: name=input('请输入姓名:') phone=input('请输入电话号码:') while phone in phones.keys(): phone=input('电话号码已存在,请重新输入:') phones[phone]=name print('收录完成') elif i==2: name=input('请输入要删除的姓名:') for item in phones.items(): if item[1].__eq__(name): phones.pop('name') print('删除成功') else: print('您删除的姓名不存在') elif i==3: phone=input('请输入要修改的手机号码:') if phone in phones.keys(): phone1 = input('请输入修改后的手机号:') while phone1 in phones.keys(): phone1=input('您输入的手机号已存在,请重新输入:') a=phones.pop(phone) phones[phone1]=a print('修改成功') else: print('您要修改的手机号不存在,请重新输入') elif i==4: for a,b in phones.items(): print('姓名:'+str(b)+' '+'电话:'+str(a)) elif i==5: name=str(input('请输入要查找的姓名:')) if name in phones.values(): for j in phones.items(): if j[1].__eq__(name): print('您查找的手机号为:',j[0]) else: print('您输入的姓名有误') elif i==6: print('谢谢使用') break