小白的python之旅(八)----字典的操作

小白的python之旅(八)----字典的操作

# 1,什么时候使用字典
# 需要同时保存多个变量,多个数据的意义不同(需要作区分)
"""
字典(dic)是容器型数据类型,将{}作为容器的标志,多个元素用逗号隔开,字典元素都是键值对
{键1:值1,键2:值2,......}  键就是关键字  值就是数据
字典是可变的,支持增删改;字典是无序的(不支持下标操作)
键  ---> 不能是可变的数据;唯一  一般都是字符串
值  ---> 任何类型的数据,可以重复
键是用来对值进行区分和说明
如果存在重复的key,后一个key对应的value会覆盖前一个key对应的value
"""

# 获取单个元素的值
# 1)dic{key}=value  key不存在会报错 key error
stu = {'name': 'jack', 'age': 18, 'score': 90, 'id': '201531070363'}
print(stu['name'])  # jack
print(stu['score'])  # 90
# 2)dic.get(key)  如果key不存在会返回None
#    dic.get(key,默认值)  如果key不存在,返回默认值
print(stu.get('age'))  # 18
print(stu.get('height'))  # height不存在会  返回None
print(stu.get('id', '201531070367'))  # 201531070363
print(stu.get('height', '175'))  # height不存在返回设定的默认值 175
print('=======================')
# 获取多个元素,遍历
for key in stu:
    print(key, end=' ')  # name,age,score,id
print()
print('=======================')
for key in stu:
    print(stu[key], end=' ')  # jack 18 90 201531070363
print()
print('=======================')

# 其他方式的遍历
# for value in 字典.values():  效率很低
# for key in 字典.keys():    效率很低
# for key,value in 字典.items(): 效率很低
for value in stu.values():
    print(value, end=' ')  # jack 18 90 201531070363
print()
print('=======================')
for key in stu.keys():
    print(key, end=' ')  # name age score id
print()
print('=======================')
for key, value in stu.items():
    print(key, value, end=' ')  # name jack  age 18  score 90  id 201531070363
print()
print('=======================')

# 字典的增删改
""" 字典的增加和修改 """
# 字典[key]=value  既可以修改也可以添加
# 如果key存在,就修改成指定的value  ,如果不存在,则会以 key:value 的形式添加新的键值对
stu1 = {'name': 'jack', 'age': 18, 'score': 90, 'id': '201531070363'}
stu1['name'] = 'rose'
print(stu1)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363'}
stu1['height'] = '1.75'
print(stu1)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75'}

# 字典.setdefault(key,value)  只有添加功能,没有修改功能
# 如果key存在,不会修改值,如果key不存在,则会以 key:value 的形式添加新的键值对
stu1.setdefault('name', 'mike')
print(stu1)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75'}
stu1.setdefault('weight', '50kg')
print(stu1)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75', 'weight': '50kg'}

""" 字典的删除 """
# del dic[key]   -->  删除key对应的键值对 ,如果key不存在会报错
# dic.pop[key]   -->  取出key对应的键值对 原字典的数据不存在,但数据依然存在
stu2 = {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75', 'weight': '50kg'}
del stu2['weight']
print(stu2)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75'}
height1 = stu2.pop('height')
print(height1)
# 1.75
print(stu2)
# {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363'}


students = {'001': {'name': 'jack', 'age': 18, 'score': 90, 'id': '201531070363'},
            '002': {'name': 'Rose', 'age': 20, 'score': 77, 'id': '201531070362'},
            '003': {'name': 'Mike', 'age': 17, 'score': 94, 'id': '201531070365'}
            }
print(students['001']['id'])
print('=======================')

# 统计学生小于18岁的人
students_list = []
i = 0
while i < 4:
    students_dic = {}
    name = input('请输入您的姓名')
    students_dic['name'] = name
    age = int(input('请输入您的年龄'))
    students_dic['age'] = age
    tel = input('请输入您的电话')
    students_dic['tel'] = tel
    score = int(input('请输入您的成绩'))
    students_dic['score'] = score
    students_list.append(students_dic)
    i += 1
print(students_list)
count = 0
for x in students_list:
    if x['age'] < 18:
        count += 1
print('未成年人的个数为{}'.format(count))

字典的相关方法

# 字典不支持加法和乘法运算
# 字典只支持比较相等,不支持比较大小
stu3 = {'name': 'rose', 'age': 18, 'score': 90, 'id': '201531070363', 'height': '1.75'}
stu4 = {'age': 18, 'name': 'rose', 'score': 90, 'height': '1.75', 'id': '201531070363'}
print(stu3 == stu4)  # True  只要键值对的数量和值都相等,就是True,字典是无序的

# 2)in 和 not in
# key in dic  判断字典中是否存在指定的key
# key not in dic  判断字典中是否不存在指定的key
print('name' in stu4)  # True
print('rose' in stu4)  # False

# 3)相关函数
# len(dic)统计键值对的个数
print(len(stu4))  # 5
# dict(容器型数据)
# 容器中的容器有且仅有两个元素 ,两个元素中的第一个元素是不可变的,比如[['age',20],['name','lili']]
# 其实就是满足字典键值对的要求,转换后返回一个新的字典
list1 = [['age', 20], ['name', 'lili']]
dict1 = dict(list1)
print(dict1)  # {'age': 20, 'name': 'lili'}

x = ('we', 'rg', 'dg')
dict2 = dict(x)
print(dict2)  # {'w': 'e', 'r': 'g', 'd': 'g'}

# 4)字典转换为其他的数据类型
# bool(字典)  --> 空字典会转换为False,其他都是True
# list(字典)   --> 字典所有的key作为列表的元素
# tuple(字典) --> 字典所有的key作为元组的元素

print(list(stu4), tuple(stu4))
# ['age', 'name', 'score', 'height', 'id']    ('age', 'name', 'score', 'height', 'id')

# 5)字典的相关方法
# 1) dic.clear() 清空字典
# 2)字典.copy() 复制字典,产生一个新的字典并且返回
# 3)dict.fromkeys()
# dict.fromkeys(序列)   创建一个新的字典,字典的key值是序列中的元素,所以序列是不可变的,值是None
# 相当于创建一个dict模板
dict3 = dict.fromkeys('abc')
print(dict3)  # {'a': None, 'b': None, 'c': None}
dict4 = dict.fromkeys(['name', 'age', 'tel', 'gender'])
print(dict4)  # {'name': None, 'age': None, 'tel': None, 'gender': None}

# dict.fromkeys(序列,值) 创建一个新的字典,字典的key值是序列中的元素,所以序列是不可变的,值是给定的值
dict5 = dict.fromkeys(['name', 'age', 'tel', 'gender'], 'iii')
print(dict5)  # {'name': 'iii', 'age': 'iii', 'tel': 'iii', 'gender': 'iii'}

"""
字典.keys()  获取字典所有的key,返回一个容器,不是列表
字典.values()   获取字典所有的value,返回一个容器,不是列表
字典.items() 获取字典所有的key 和 value,返回一个容器,容器中的元素是一个元组,每一个元组是一个键值对
字典.popitem() 去除最后一个键值对
字典.update(序列) 是将序列转换为字典,用转换后的字典去更新指定的字典 ,不存在就添加,存在就修改
"""
dict6 = {'name': 'jack'}
dict5.update(dict6)
print(dict5)  # {'name': 'jack', 'age': 'iii', 'tel': 'iii', 'gender': 'iii'}
dict7 = {'height': '1.78'}
dict5.update(dict7)
print(dict5)  # {'name': 'jack', 'age': 'iii', 'tel': 'iii', 'gender': 'iii', 'height': '1.78'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值