python基础之字典和元组

字典与元组基本操作

字典的增删改查

person = {'name': 'zhangsan', 'age': 18, 'x': 'y'}
# 查找数据(字典里的数据保存时,是无序的,不能通过下标来获取)
print(person['name'])  # 使用key获取对应的value,如果对应的key不存在,会报错
# 需求:获取一个不存在的key时,不报错,如果这个key不存在,使用默认值
# 使用字典里的get方法,如果key不存在,会默认返回None而不报错
print(person.get('height'))  # None
print(person.get('gender', 'female'))
print(person.get('name', '王文英'))
# 添加
# 如果key存在,是修改对应的value
# 如果key在字典里不存在,会往字典里添加一个新的key---value
person['gender'] = 'female'
print(person)
# 修改
person['gender'] = 'male'
print(person)
# 删除
# 删除对应的健值及value值
person.pop('x')
print(person)
# popitem删除一个元素,结果删除的是这个元素组成的键值对有返回值,删除的是最后一个键值对
result = person.popitem()
print(result)  # ('gender', 'male')
print(person)
result=person.popitem()
print(result)

字典里面的遍历

person = {
    'name': 'zhangsan',
    'age': 18,
    'height': 180,
    'age': 20,  # 会替换上一个age的值
    'isPass': True,  # 值可以是布尔值
    'hobbies': ['唱', '跳', 'rap'],
    4: 'good'  # key只能是不可变数据类型如:字符串,数字,元组
}
person.popitem()  # 删除最后一个键值对
print(person)

# 第一种遍历,直接for...in循环遍历
for x in person:
    print(x, '=', person[x], sep="", end=" ")

print()
# 第二种方式遍历
# 获取到所有的key值,然后再遍历key,根据key获取value
for k in person.keys():
    print(k, '=', person[k], sep="", end=" ")

print()
# 第三种遍历
for item in person.items():  # 列表里的元素是元组
    print(item,end=" ")  # ('name', 'zhangsan') ('age', 20) ('height', 180) ('isPass', True) ('hobbies', ['唱', '跳', 'rap'])
print()
for k, v in person.items():
    print(k, '=', v, sep="", end=" ")

字典里面的推导式

person = {'name': "张三", 'age': 18}
# 实现key和value倒置
person = {v: k for k, v in person.items()}
print(person)

字典的注意事项

person = {
    'name': 'zhangsan',
    'age': 18,
    'height': 180,
    'age': 20,  # 会替换上一个age的值
    'isPass': True,  # 值可以是布尔值
    'hobbies': ['唱', '跳', 'rap'],
    4: 'good'  # key只能是不可变数据类型如:字符串,数字,元组
}
# 1.字典里的key不允许重复,如果key重复了,后一个key对应的值会覆盖前一个
# 2.字典里的value可以是任意数据类型,但是key只能使用不可变数据类型,一般使用字符串
print(person)

字典里面存在问题事例

persons = [
    {'name': '张三', 'age': 22},
    {'name': '李四', 'age': 20},
    {'name': '王五', 'age': 20}
]
name = input('请输入你的姓名:')
for person in persons:  # in用在字典上,是用来判断key是否存在而不是value
    if person['name'] == name:
        print("你的信息已经存在")
        break
else:
    p = {}
    age = int(input("请输入年龄:"))
    p['name'] = name
    p['age'] = age
    persons.append(p)
    print('用户添加成功')
print(persons)

字典,元组和列表的拼接方法

# 列表
num1 = [1, 2, 3, 4, 5, 6]
num2 = [78, 98, 65, 45, 23, 12]
# extend连接的是两个列表,会改变原有的列表
num1.extend(num2)
print(num1)  # [1, 2, 3, 4, 5, 6, 78, 98, 65, 45, 23, 12]
print(num2)  # [78, 98, 65, 45, 23, 12]

# 元组
words1 = ('hello', 'good')
words2 = ('yes', 'ok')
print(words2 + words1)  # ('yes', 'ok', 'hello', 'good')
print(words1)  # ('hello', 'good')
print(words2)  # ('yes', 'ok')

# 字典
# update实现两个字典的连接
person1 = {'name': '张三', 'age': 18}
person2 = {'age': 22, 'add': '湖北宜昌'}
person1.update(person2)
print(person1)  # {'name': '张三', 'age': 22, 'add': '湖北宜昌'}

字典练习之统计字符串出现的次数

import random

k = []
ch = []
dict_1 = {}
for value in range(1, 101):
    k.append(random.randint(65, 90))  # 随机生成100个65到90之间的数字
for i in k:
    ch.append(chr(i))  # 把相应的随机数转换为字符加入到新的列表中
ch.sort()  # 把对应的字符进行排序,生成字典序
print(ch)
# 另一种统计字符出现的次数方法
for char in ch:
    if char in dict_1:
        dict_1[char]+=1
    else:
        dict_1[char]=1
# 方法二:
for k in ch:
    if k not in dict_1:
        dict_1[k] = ch.count(k)  # 把相应的字符加入到字典中,并且用count方法统计相应的字符在列表中出现的次数
print(dict_1)

# 字符出现次数最多的是什么字符:
vs = dict_1.values()
max_count = max(vs)
for k, v in dict_1.items():
    if v == max_count:
        print(k, sep="", end=" ")
print()
print(max_count)

元组练习

sing = ('李白', '白居易', '李清照', '杜浦', '王昌龄', '王维', '孟浩然', '王安石')
dance = ('李商隐', '杜浦', '李白', '白居易', '岑参', '王昌龄')
rap = ('李清照', '刘禹锡', '岑参', '王昌龄', '苏轼', '王维', '李白')
# 求选课学生一共有多少人
# 元组之间支持加法运算
# 使用set集合可以去重
total = sing + dance + rap
set_1 = set(total)
print(len(set_1))

# 求只选了第一个学科的人的数量和对应的名字
# 方法一:
count = 0
for p in sing:
    if p not in dance and p not in rap:
        count += 1
        print(p, end=" ", sep="  ")
print()
print(count)
# 方法二:
s = set(sing)
d = set(dance)
r = set(rap)
d = (s - d) - r
print(d)

# 3.求只选了一门学科的学生数量和对应的名字
dict={}
for p in total:
    if p not in dict:
     dict[p]=total.count(p)
print(dict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值