Python基础-06 元组字典

元组

  • 元组和列表类似,用来保存多个数据
  • 使用一对小括号 () 来表示一个元组
  • 元组和列表的区别在于,列表是可变的,而元组是不可变数据类型
  • 元组不可以通过下标来修改元组中的元素
  • 元组只支持查
nums = (1,2,3,4,5,6,7,8,9,9,2,1)

print(nums[3])  # 4
# nums[3] = 40  # 元组是不可变数据类型,不能修改
print(nums.index(7))  # 6
print(nums.count(9))  # 2

# 特殊情况:如何表示只有一个元素的元组?
ages = (18)  # 该方式书写,ages的类型是一个整数,不是一个元组
print(type(ages))  # <class 'int'>

ages = (18,)  # 如果元组里面只有一个元素,要在最后面加一个逗号 ,
print(type(ages))  # <class 'tuple'>

# 如何把列表转换为元组?元组转换成列表
word = ['hello','hi','fine','thank']

word_tuple = tuple(word)  # # 使用tuple方法,将可迭代对象转换为元组
print(word_tuple)  # ('hello', 'hi', 'fine', 'thank')
nums = (1,2,3,4,5,6,7,8,9,9,2,1)
nums_list = list(nums)  # 使用list方法,可以将元组转换为列表
print(nums_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 2, 1]

# 遍历元组
nums = (1,2,3,4,5,6,7,8,9,9,2,1)
for i in nums:
    print(i)

字典

字典的使用

  • 列表可以用来存储任意的数据类型,但一般情况下,我们都存储单一的数据类型
  • 列表只能存储值,但是其中的每一个元素代表的意义,无法进行描述
  • 字典不仅可以用来保存值,还可以对值进行描述
  • 使用大括号的方式来表示一个字典 {} ,不仅有值 value ,还有值的描述 key
  • key和value之间使用冒号 : 来连接
  • 多个键值对之间使用逗号 , 来分隔
person = {
    'name': 'zhangsan',
    'age': 18,
    'math': 98,
    'english': 89,
    'chinese': 99
}

字典的注意事项

  1. 字典的key不允许重复,如果key重复,后面的值会覆盖前面的
  2. 字典里的value可以使用任意数据类型,但是key只能使用不可变数据类型,一般使用字符串

字典的增删改查

person = {'name': 'zhangsan','age': 18,'math': 98,'english': 89,'chinese': 99}

# 查找数据(数据保存在字典中是无序的,不能通过下标来获取,可以通过key的值来获取)
print(person['name'])  # zhangsan
# print(person['height']) #  KeyError 如果要查找的值的key不存在,会直接报错

# 获取一个字典中不存在的值,要求不报错,并返回一个默认值
# 使用字典的get方法,如果key不存在,会默认返回None而不报错
# 如果根据key获取不到value,使用给定的默认值
# get方法不会向字典中添加
print(person.get("height"))  # None
print(person.get("height",'180'))  # 180 设置默认值

# 直接使用key可以修改对应的value
person['name'] = 'lisi'
print(person)  # {'name': 'lisi', 'age': 18, 'math': 98, 'english': 89, 'chinese': 99}

# 如果在修改时,给定的key不存在,则会直接在字典中添加
person['gender'] = 'male'
print(person)  # {'name': 'lisi', 'age': 18, 'math': 98, 'english': 89, 'chinese': 99, 'gender': 'male'}

# pop popitem clear 都可以用来删除字典中的元素
# pop 按照key删除value,返回被删除的value
x = person.pop('name')
print(x)  # lisi
print(person)  # {'age': 18, 'math': 98, 'english': 89, 'chinese': 99, 'gender': 'male'}

# popitem 删除一个元素,返回删除的这个元素组成的键值对
x = person.popitem()
print(x)  # ('gender', 'male')
print(person)  # {'age': 18, 'math': 98, 'english': 89, 'chinese': 99}

# clear 清空字典
x = person.clear()
print(x)  # None
print(person)  # {}

update方法

  • 列表可以通过extend方法将两个列表合并成一个列表
  • 字典使用update方法将两个字点合并成一个字典
  • 字典之间不支持加法
person = {'name':'zhangsan','age':18}
person2 = {'addr':'hangzhou','gender':'male'}
person.update(person2)
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': 'hangzhou', 'gender': 'male'}

字典的遍历

  • 字典是键值对的形式
person = {'name':'zhangsan','age':18}
# 第一种遍历方式
for x in person:
    print(x)
# name
# age
# 直接使用for...in循环遍历,获得的是key的值,可以通过key来获取value
for x in person:
    print(x ,'=',person[x])

# name = zhangsan
# age = 18

# 第二种方法,通过keys方法获取到字典中的所有key,然后通过遍历key的方式来获取value
print(person.keys())  # dict_keys(['name', 'age'])
for i in person.keys():
    print(i,'=',person[i])

# name = zhangsan
# age = 18

# 第三种方法,通过vlaues方法,可以拿到所有的values
for i in person.values():
    print(i)

# zhangsan
# 18

# 第四种方法,使用items方法,可以按照字典中的键值对,返回一个列表
# 列表中的每个元素都是一个键值对组成的元组
# 可以采用遍历这个列表的方式获取到字典中的键值对
# 进而通过元组的下标,获取到字典中的key和value
for i in person.items():
    print(i)
    print(i[0],'=',i[1])

# ('name', 'zhangsan')
# name = zhangsan
# ('age', 18)
# age = 18

# 第四种方法还可以通过拆包的方式直接获取到字典中的key和value
for i,j in person.items():
    print(i,'=',j)

# name = zhangsan
# age = 18

字典的练习

  • 将一个列表中的数字按照出现的次数保存到一个字典中
chars = ['a','c','x','d','p','a','m','q','s','t','p','a','t','c']

chars_count = {}
for i in chars:
    if i in chars_count:
        print('已存在')
    else:
        chars_count[i] = chars.count(i)
print(chars_count)  # {'a': 3, 'c': 2, 'x': 1, 'd': 1, 'p': 2, 'm': 1, 'q': 1, 's': 1, 't': 2}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值