元组和字典类型

创作不易 要是写得可以留个赞再走吧

1. 元组类型

1.1 元组的介绍

类型:tuple
特性:与字符串同为不可变序列数据类型

一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)

1.2 基本使用

1.2.1 创建:()或tuple()

如果元组不为空元组时,则至少要有一个逗号(,) 当元组不为空时,括号可以省略, 当你只做了一个变量的赋值的时候,元组的括号可以省略
注意

tuple1 = (1, 2, "xwh")
tuple2 = ()
tuple3 = (1) 
tuple4 = (1,) #如果元组不为空元组时,则至少要有一个逗号(,)
print(type(tuple2),type(tuple3))
# 拆包
tuple5 = 1, 2, 3, True # 当你只做了一个变量的赋值的时候,元组的括号可以省略
tuple6 = 1,
print(type(tuple5),type(tuple6))

tuple7 = (1, 2, 3, 4)
a, *b, c = tuple7  # *号表示匹配所有,注意,不能同时存在两个或两个以上的*
print(a)
print(b)
print(c)
>>>1
   [2, 3]
   4
# 数据获取
print(tuple7[1:3])   
print(tuple7)    # 元组类型 为 不可变数据类型 只可以获取数据和切片,不改变数据整体结构

结果

<class 'tuple'> <class 'int'> <class 'tuple'> <class 'tuple'> <class 'tuple'> 
(1, 2, 3, 4)
1.2.2 解包:元组解包指元组当中的每一个元素都赋值给一个变量

列:

a, b, c = tuple1
print(a, b, c)
1 2 xwh

1.3 操作

元组继承序列所有的通用操作
参考通用操作
因为元组创建后不可修改,所以无特殊操作

2.字典类型

2.1 字典基本介绍

  1. 字典属于一种新的数据结构称为映射(mapping)
    是映射的体现 ,是映射的一种衍生形式
  2. 字典的作用和列表类似,都是用来存储对象的容器
  3. 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  4. 在字典中每一个值都有唯一的名字,通过这个唯一的名字可以找到指定的元素(键的重新赋值,后者覆盖先者
  5. 字典的键是不能重复的,如果出现重复的后面的会替换前面的
  6. 字典我们也称之为键值对(key-value)结构
  7. 每一个键值对我们称其为一项(item)
  8. 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)

2.2 映射

映射:是一种键(索引)和值(数据)的对应关系,表达了一种属性(键)与它的值的对应关系

2.3 dict

  1. 创建
# 法一:
直接创建:
dict1 = {“name”:“wh”,“sex”:“女”,“星座”:“金牛”} 
print(dict1)
# 法二
dict()赋值创建
dict2 = dict(name =“wh”,sex =“女”,星座 =“金牛”)  
 # 法三
 dict3  = dict([('name', 'wh'), ('age', 18)])
 print(dict3)

双值子序列都可以使用这种方式来创建字典 [(1, 2), (3, 4)]
双值序列[1, 2] ‘ab’(1, 2)
子序列 [(1, 2)]
字典特性:当有相同的key名称时,后面的键值对会把前面的覆盖掉

  1. 直接获取value
dict1 = {“name”:“wh”,“sex”:“女”,“星座”:“金牛”} 
print (dict1["name"]) 
  1. get
dict.get() 当使用get查询不存在的key的时候,不会报错,会返回一个None# print(dict1.get('sex'))# print(dict1['sex']) # 这种方式不存在key会直接报错
 
  1. 增加
 dict.setdefault(key, value) 向字典中添加key-value , 如果这个key存在,则不会做任何改变,如果不存在,直接添加进去
  • update # 以字典类型增加
    update() 将其他字典的key-value添加到当前的字典当中
  1. 删除
  • del删除,以key 索引 del 删除字典中的key-value
  • pop删除 pop(key[,default]) 根据key删除自定中的value。第二个参数可以指定一个默认值,当获取不到值的时候,返回这个值
  • popitem popitem()
    删除字典最后的一个key-value 这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回
  1. copy() 方法用来对字典进行潜复制
    注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进行复制的

列表的操作

# -*- coding: utf-8 -*-
# @Time    : 2021/3/15 21:32
# @Author  : B612
# @File    : 字典.py
# 1.创建
dict1 = {
            "name": "liHua",
            "sex": "男",
            1: "哈哈"
}
print(type(dict1))
# 2. 查询
print(dict1["name"])
# 3. 基本操作
print(len(dict1))
print('name' in dict1)
print('liHua' in dict1)     # key相当于索引, 不能用value来判断 item 是否在字典中
# 4.获取
# dict.get() 当使用get查询不存在的key的时候,不会报错,会返回一个None
print(dict1.get(1))
print(dict1.get("1"))    # None

# 5.修改
dict1['name'] = 'xy'
print(dict1)

# dict1['name'] = xy
# print(dict1)
# 运行结果
# None
# NameError: name 'xy' is not defined

# 6.删除(3)
# dict.pop(key[,default]) 根据key删除特定中的value。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
res = dict1.pop('2', '当前数据不存在')
print(res)
print(dict1)
# dict.popitem() 删除字典最后的一个key-value这个方法是有返回值的。删除之后它会将删除的key - value作为返回值返回(元组类型)
res = dict1.popitem()
print(res)
print(dict1)
# del 删除字典中的key-value,以索引形式提取
del dict1["name"]
print(dict1)
# 7. 增加
# update() 将其他字典的key-value添加到当前的字典当中
dict2 = {"地址":"江西"}
dict1.update(dict2)
print(dict1)
# dict.setdefault(key, value) 向字典中添加key-value , 如果这个可以存在,则不会做任何改变,如果不存在,直接添加进去
dict1.setdefault('boyfriend', '应志平')
print(dict1)
# dict.clear() 清空

运行结果

D:\python3.6.5\python.exe D:/pycharm2019/Newproject/字典.py
<class 'dict'>
liHua
3
True
False
哈哈
None
{'name': 'xy', 'sex': '男', 1: '哈哈'}
当前数据不存在
{'name': 'xy', 'sex': '男', 1: '哈哈'}
(1, '哈哈')
{'name': 'xy', 'sex': '男'}
{'sex': '男'}
{'sex': '男', '地址': '江西'}
{'sex': '男', '地址': '江西', 'boyfriend': '应志平'}

Process finished with exit code 0

2.4 遍历列表

我们主要可以通过3种方式对字典进行遍历
• keys() 该方法返回字典所有的key• values() 该方法返回一个序列 序列中保存有字典的值
• items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是 字典中的key和value

练习

# @Time    : 2021/3/17 17:04
# @Author  : B612
# @File    : 第七讲作业.py

# 第一题
dict1 = {"name": "123", "date": {"result": [{"src": "python1"}, {"src": "python2"}, {"src": "python3"}]}}
dict2 = dict1["date"]
ls = dict2["result"]
for i in range(3):
    print(ls[i].get("src"), end='\t')
# 第二题
# 有如下值列表[11,22,33,44,55,66,77,88,99,90] 将大于等于66的值保存至字典的第个key的值中,将小于66值保存至第二个key的值中。
ls = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dict3 = {}
a = []
b = []
for i in ls:
    if i >= 66:
        a.append(int(i))
    else:
        b.append(int(i))
dict3.setdefault(1, a)
dict3.setdefault(2, b)
print(dict3)

运行

D:\python3.6.5\python.exe D:/pycharm2019/Newproject/第七讲作业.py
python1	python2	python3	{1: [66, 77, 88, 99, 90], 2: [11, 22, 33, 44, 55]}

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值