python学习之字典

4.字典

4.1 字典概念

  • python内置的数据结构之一,与列表一样是一个可变序列
  • 以键值对的方式存储数据,字典是一个无序的序列
  • 放在字典中的key是不可变序列;目前学到的整数和字符串是不可变序列,列表和字典是可变序列
  • scores = {’张三‘:100,’李四‘:98,’王五‘:45}。其中,scores:字典名;张三:键;100:值
  • 字典的实现原理:字典的实现原理与查字典类似,查字典是先根据部首或拼音查找应的页码,Python中的字典是根据key查找value所在的位置

4.2 字典的创建

  • 使用花括号
  • 使用内置函数dict()
scores = {'张三':100,'李四':98,'王五':45}
print(type(scores)) #<class 'dict'>
print(scores) #{'张三': 100, '李四': 98, '王五': 45}

student = dict(name='jack',age=20)
print(student)#{'name': 'jack', 'age': 20}

#空字典
d = {}
print(d) #{}

4.3 字典元素的获取

[]取值与使用get()取值的区别

  • 如果字典中不存在指定的key,抛出keyError异常
  • get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
scores = {'张三':100,'李四':98,'王五':45}
# 第一种,使用[]
print(scores['张三']) #100
#print(scores['陈六']) # 报错:KeyError: '陈六'

# 第二种,使用get()方法
print(scores.get('张三')) #100
print(scores.get('陈六')) #None

4.4 kye的判断

#key的判断
print('张三' in scores) #True
print('张三' not in scores) #False

4.5 字典元素的删除

#删除指定的key-value对
del scores['张三'] #输出{'李四': 98, '王五': 45}
#清空
scores.clear() #输出{}

4.6 字典元素的新增

#新增
print(scores) #{'李四': 98, '王五': 45}
scores['陈六'] = 98 #{'李四': 98, '王五': 45, '陈六': 98}

4.6 字典元素的修改

#修改
print(scores) #{'李四': 98, '王五': 45}
scores['陈六'] = 100 #{'李四': 98, '王五': 45, '陈六': 100}

4.7 获取字典视图

  • keys() :获取字典中所有的key
  • values() :获取字典中所有的value
  • items() :获取字典中所有的key,value对
scores = {'张三':100,'李四':98,'王五':45}
#获取所有的key
keys = scores.keys()
print(keys)#dict_keys(['张三', '李四', '王五'])
print(type(keys))#<class 'dict_keys'>
print(list(keys))#['张三', '李四', '王五']

#获取所有的value
values = scores.values()
print(values) #dict_values([100, 98, 45])
print(type(values)) #<class 'dict_values'>
print(list(values)) #[100, 98, 45]

#获取所有的key-value对
items = scores.items()
print(items) #dict_items([('张三', 100), ('李四', 98), ('王五', 45)])
print(list(items)) #[('张三', 100), ('李四', 98), ('王五', 45)]

4.8 字典元素的遍历

scores = {'张三':100,'李四':98,'王五':45}
for i in scores:
    print(i,scores[i],scores.get(i))
'''
输出:
张三 100 100
李四 98 98
王五 45 45
'''

4.9 字典的特点

  • 字典中的所有元素都是一个key-value对, key不允许重复, value可以重复
  • 字典中的元素是无序的(是hash函数经过计算自己分配的
  • 字典中的key必须是不可变对象(比如不能是list列表,因为列表可变),字典也可以根据需要动态地伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

4.10 字典生成式

  • 内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
  • 结构:{item.upper():price for item,price in zip(items,prices)}
items = ['Fruits','Books','Others']
prices = [98,98,76] # 即使 prices = [98,98,76,56] ,输出结果也一样
d = {item.upper():price for item,price in zip(items,prices)}
print(d) #{'FRUITS': 98, 'BOOKS': 98, 'OTHERS': 76}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值