元组与字典——python
一、 元组
1. 元组就是不可变的列表
1)元素可以是任何类型的数据
tuple1 = (10, 25 , True, 'sadad', [1,2,3])
print(tuple1)
2)列表获取元素的方法都适用于元组
tuple2 = ('杨幂','刘亦菲','张艺兴','邓超')
print(tuple2[1])
遍历
for x in tuple2:print(x)
for index , item in enumerate(tuple2):print(index, item)
切片
print(tuple2[::-1])
- 列表相关操作都适用于元组
print((1, 2, 3, )+('a','b'))
相关方法
nums = (10, 34, 56, 40, 10)
print(nums.count(10))
print(nums.index(34))
2. 元组特有的一些方法和功能
1)只有一个元素的元组:()中唯一的元素后需要添加逗号
list1 = [100]
print(type(list1)) # <class 'list'>tuple1 = (100)
print(type(tuple1)) # <class 'int'>tuple1 = (100,)
print(type(tuple1)) # <class 'tuple'>
2)直接多个数据用逗号隔开表示的也是一个元组(元组的括号在没有歧义的时候可以省略)
tuple2 = (100 , 200, 300)
tuple3 = 100, 200, 300
print(tuple2,tuple3)
3)获取元素的时候可以通过让变量的个数和元组中元素的个数保持一致,来分别获取元组中每个元素的值
point = (1000, 200)
x, y =point
print(x, y)
- 让变量的个数少于元组中元素的个数,并且在一个变量前加*
先让没有*号的变量依次获取元素,然后把剩下的所有的元素作为一个列表的返回
stu = ('小明',30,'男',96, 35, 60)
name, age, *gender, scores = stu
print(gender)
print(scores)
二、 字典
1. 字典
问题:用列表同时保存多个意义不同的数据,代码的可读性很低
stu = ['小明',30,'男','1555555555',96, 35, 60]
解决:用字典保存多个意义不同的数据
stu = {'name':'小明','age':20,'sex':'男','m-tel':'15555555555','score':60}
print(stu['name'])
print(stu['sex'])
print(stu['score'])
- 什么是字典
字典是容器型数据类型的数据,将{}作为容器的标志,里面多个用逗号隔开(其中元素必须是键值对)
{键1:值1, 键2:值2, 键3:值3, …}
字典是可变(支持增删改);字典是无序(不支持下标操作)
字典的元素:键是不可变的,唯一的;值可以值任何类型的数据,并且可以重复
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # Truedict1 = {10: 100,'abc': 200,(10,): 300
}# dict2 = {[10, 20]: 100} # TypeError: unhashable type: 'list', 列表不可以作为keydict3 = {'name': '张三', 'name': 100}
print(dict3) # {'name': 100}
练习: 定义一个字典,保存一条的狗的信息,包括:名字、品种、颜色、年龄
dog1 = {'name': '贝贝','bread': '土狗','color': '黄色','age': 1
}
- 元素的增删改查
查 - 获取字典的值
a.获取单个值
- 字典[key] - 获取字典中指定key对应的值(如果key不存在,会报错)
- 字典.get(key) - 获取字典中指定key对应的值(如果key不存在,不会报错,返回None)
字典.get(key, 默认值) - 获取字典中指定key对应的值(如果key不存在,不会报错, 返回默认值)
movie1 = {'name': '战狼','director': '吴京','actor': '吴京','release_time': '2015','kind': '动作/战争/军事'
}
movie2 = {'name': '沉默的羔羊','director': '乔纳森·戴米','actor': '茱迪·福斯特,安东尼·霍普金斯','release_time': '1991','kind': '惊悚'
}print(movie1['name'])
print(movie1['kind'])
print(movie2['name'])
# print(movie1['score']) # KeyError: 'score'print(movie2.get('kind')) # 惊悚
print(movie2.get('score')) # Noneprint(movie2.get('release_time', '2020-1-1')) # 1991
print(movie2.get('score', 1)) # 1
b.遍历字典
(推荐使用)方法一:
for 变量 in 字典:
循环体(变量在循环体中得到的是字典的key)
for x in movie1:print(x, movie1[x])
方法二:
for 变量1,变量2 in 字典.items():
循环体(循环体中变量1取到的所有的键,变量2取到的是所有键对应的值)
print(movie1.items())
for x, y in movie1.items():print(x, y)
增/改 - 添加键值对/修改键值对的值
字典[key] = 值 - 当key不存在就是添加键值对;当key存在的时候就是修改key对应的值
subject = {'name': 'Python','score': 3,'class_hour': 20,'direction': ['数据分析', 'web后端', '爬虫', '自动测试', '自动化运维']
}
print(subject)subject['teacher'] = '余婷'
print(subject)subject['score'] = 4
print(subject)
删
del 字典[key] - 删除字典指定key对应的键值对
字典.pop(key) - 取出字典中指定key对应的值
del subject['class_hour']
print(subject)del_item = subject.pop('direction')
print(subject)
print(del_item)
2. 字典的应用
练习:
1.定义一个变量同时保存5条狗的信息,每条狗有:名字、年龄、性别、品种、价格和颜色
2.统计5条狗中公的有多少条
3.打印所有价格超过2000元的狗的名字
dogs = [{'name': '大黄', 'age': 3, 'sex': '公', 'breed': '土狗', 'price': 10, 'color': '黄色'},{'name': '白白', 'age': 2, 'sex': '母', 'breed': '银狐', 'price': 2500, 'color': '白色'},{'name': '八两', 'age': 1, 'sex': '母', 'breed': '金毛', 'price': 800, 'color': '黄色'},{'name': '橙子', 'age': 1, 'sex': '母', 'breed': '巴哥', 'price': 1500, 'color': '黄色'},{'name': '二爷', 'age': 2, 'sex': '公', 'breed': '贵宾犬', 'price': 3000, 'color': '白色'}
]count = 0
for dog in dogs:# print(dog['sex'])if dog['sex'] == '公':count += 1if dog['price'] > 2000:print(dog['name'])print('公狗的数量:', count)
定义一个变量保存一个班级信息
c = {'name': 'python2003','position': '23教室','lecturer': {'name': '余婷','sex': '女','age': 18,'QQ': '726550822'},'class_teacher': {'name': '杨云珂','sex': '女','age': 20,'QQ': '782921812'},'students': [{'name': '马杰', 'id': '6272636716212', 'tel': '110'},{'name': '佳伟', 'id': '7823823', 'tel': '110'},{'name': '朝林', 'id': '79283293', 'tel': '110'},{'name': '马杰', 'id': '6272636716212', 'tel': '110'},{'name': '马杰', 'id': '6272636716212', 'tel': '110'}]
}# l = c['lecturer']
# print(l)
# print(l['QQ'])
print(c['lecturer']['QQ']) # 726550822print(c['students'][2]['id']) # 79283293
3. 字典的相关操作和方法
- 相关操作
1)字典不支持加法、乘法和比较大小的运算
# print({'a': 10} + {'b': 20}) # TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
# print({'a': 100} > {'b': 10}) # TypeError: '>' not supported between instances of 'dict' and 'dict'
2)判断数据本身是否相等: ==, !=
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True
is - 判断两个数据的地址是否相等
a = {'a': 10}
b = {'a': 10}
c = a
print(id(a), id(b), id(c))
print(a == b) # True
print(a is b) # False
print(a is c) # True
3)in 和 not in
key in 字典 - 判断字典中是否有指定的key
dict1 = {'a': 10, 'b': 20, 'c': 30}
print(10 in dict1) # False
print('b' in dict1) # True
4)相关函数: len、dict
len(字典) - 获取字典中键值对的个数
print(len(dict1)) # 3
dict(数据) - 将其他数据转换成字典(数据的要求: 1.序列 2.序列中的元素还是序列 3.内部的序列有且只有两个元素,第一个元素不可变)
list1 = ['ab', (10, 20), ['name', '张三']]
print(dict(list1)) # {'a': 'b', 10: 20, 'name': '张三'}
将字典转换成其他数据
stu = {'name': '小明', 'age': 18, 'score': 100}
1)将字典转换成列表/元组 - 将字典的key作为列表/元组的元素
print(list(stu)) # ['name', 'age', 'score']
print(tuple(stu)) # ('name', 'age', 'score')
2)将字典转换成字符串
print(str(stu)) # "{'name': '小明', 'age': 18, 'score': 100}"
3)将字典转换成布尔
print(bool({})) # False
print(bool(stu)) # True
- 相关方法
1)字典.clear()
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.clear()
print(stu) # {}
2)字典.copy()
stu = {'name': '小明', 'age': 18, 'score': 100}
stu1 = stu
stu['name'] = '小花'
print(stu1) # {'name': '小花', 'age': 18, 'score': 100}
stu = {'name': '小明', 'age': 18, 'score': 100}
stu2 = stu.copy()
print(stu2) # {'name': '小明', 'age': 18, 'score': 100}
stu['name'] = '小花'
print(stu2) # {'name': '小明', 'age': 18, 'score': 100}
3)dict.fromkeys(序列, 默认值=None) - 创建一个新的字典,序列中所有的元素会作为新字典的key, 默认值是所有key对应的值
new_dict = dict.fromkeys('abc')
print(new_dict) # {'a': None, 'b': None, 'c': None}
new_dict = dict.fromkeys(['name', 'age', 'sex'], 0)
print(new_dict) # {'name': 0, 'age': 0, 'sex': 0}
new_dict = dict.fromkeys(['name', 'age', 'sex'], ['张三', 19, '男'])
print(new_dict) # {'name': ['张三', 19, '男'], 'age': ['张三', 19, '男'], 'sex': ['张三', 19, '男']}
4)字典.items()、字典.keys()、字典.values()
stu = {'name': '小明', 'age': 18, 'score': 100}
print(stu.items()) # dict_items([('name', '小明'), ('age', 18), ('score', 100)])
print(stu.keys()) # dict_keys(['name', 'age', 'score'])
print(stu.values()) # dict_values(['小明', 18, 100])
- 字典.setdefault(key, value) - 在字典中添加键值对(单纯的添加键值对,不会修改)
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.setdefault('weight', 50)
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50}stu.setdefault('name', '小花')
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50}
- 字典1.update(字典2) - 将字典2中所有的键值对全部添加到字典1中
stu.update({'a': 10, 'b': 20})
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50, 'a': 10, 'b': 20}
元组与字典——python相关推荐
- python基础---元组、字典、函数、文件、异常
文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...
- python元组转字典_python中怎么将元组、字典转化为列表
python中将元组.字典转化为列表的方法: python中可以使用list()方法将元组或字典转化为列表: list()方法语法:list( tup ) 参数 tup -- 要转换为列表的元组. 返 ...
- Python基础学习!容器:列表,元组,字典与集合!(2)
本文是元组 字典与集合的学习笔记! 真滴好多! 在许多地方都可以用元组代替列表,但是元组的方法函数与列表相比要少. 像,append(),insert()这些函数,元组都没有.因为,创建元组就无法修改 ...
- python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....
Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...
- python中字符串的布尔值_Python基础之字符串,布尔值,整数,列表,元组,字典,集合...
一.str字符串 1.capitalize字符串首字母大写 name = "json" v = name.capitalize() print(v) # 输出结果: Json 2. ...
- 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...
本文内容主要介绍了Python字符串.列表.元组.字典.集合,结合实例形式详细分析了Python字符串.列表.元组.字典.集合常见函数使用方法及相关操作注意事项,需要的朋友可以参考下!!! 附加: p ...
- python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串
列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...
- Python元组与字典详解
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...
- python的集合类型——字符串、列表、元组、字典
集合类型 1.字符串 下标索引 所谓下标,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间 字符串实际上就是字符数组,所以也支持下标索引 如果有字符串:name = 'abcd ...
最新文章
- 华为 Java 编程军规
- python until语句_Python3 循环
- 2019.03.21 增删改
- 编写精美的聊天界面(左边显示接收消息,右边显示发送消息)(项目已上传GitHub)
- 【图像分类】 基于Pytorch的细粒度图像分类实战
- 快手基于 Flink 的持续优化与实践
- codeforces 贪心+优先队列_算法基础04-深度优先搜索、广度优先搜索、二分查找、贪心算法...
- linux内核驱动之 设备驱动简介之内核划分
- 【js Date】时间字符串、时间戳转换成今天,明天,本月等文字日期
- 平昌一中高考2021成绩查询,2019年四川省平昌中学高考喜报
- 计算机体系结构及其硬件构成
- 超级列表框排序mysql_超级列表框排序
- Python_机器学习_常用科学计算库_第5章_Pandas
- 8421拨码开关C语言编程,8052单片机怎样读出8421BCD码拨码开关设定的数值
- html中calc属性什么意思,深入理解CSS calc属性
- 《软技能·代码之外的生存指南》读书笔记 ——自我营销
- KeyShot中的阴影效果该怎么制作
- 企业如何借助百度百家号进行网络推广?
- 蓝奏云打不开的解决方法
- 可以听歌玩游戏看股票背单词的ROS开发工具?小鱼:就差能点外卖了~