python入门基础6之字典----创建、增、删、改、查

前言

本文主要讲述python程序字典的创建,增、删、改、查。本文学习材料来自马士兵Python中入门基础版(基础语法) 2020最新版Python小白教程。视频链接https://www.bilibili.com/video/BV1wD4y1o7AS?p=58&spm_id_from=pageDriver


提示:以下是本篇文章正文内容,下面案例可供参考

字典

字典的定义

字典是Python内置的数据结构之一,与列表一样是一个可变序列(可进行增删改查操作),以 键值对 的方式存储数据,字典是一个无序的序列,即不根据元素的放入顺序进行排序,先放进来的元素可能排在前面,也可能排在中间,还可能排在后面,具体的排列顺序根据hash函数计算确定。使用 花括号 { } \{\} {} 来定义。

键值对,比如:元素名称 : : : 个数。

字典举例:

scores = {‘张三’: 100, ‘李四’: 98, ‘王五’:45}

字典示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGtgNYL5-1645369523420)(字典示意图.png)]

字典的实现原理与查字典类似,查字典是先根据部首或拼音查找相应的页码,Python中的字典是根据key(键)查找value(值)所在的位置。

字典的特点

  1. 字典中所有元素都是一个key-value对,key不允许重复,value值可以重复。
  2. 字典中的元素都是无序的。无索引值,无法指定在哪个位置的元素怎样或在哪个位置插入元素
  3. 字典中的key必须是不可变对象,如字符串类型的数据。
  4. 字典也可以根据需要动态地伸缩。
  5. 字典会浪费较大的内存,是一种使用空间换时间的数据结构。
d = {'name': 'Lily', 'name': 'Lucy'}#key不可以重复,若重复后面的元素会覆盖掉前面的严肃
print(d)
输出结果为:
{'name': 'Lucy'}

d = {'name': 'Lily', 'nickname': 'Lily'}#value值可以重复
print(d)
输出结果为:
{'name': 'Lily', 'nickname': 'Lily'}

字典的创建

  1. 使用花括号创建。各键值对之间用逗号"," 隔开。代码语法可写为:
字典名 = {键值对1,键值对2,..., 键值对n}
  1. 使用内置函数dict()创建。键值对的构建使用赋值的方式实现的。各键值对之间用逗号"," 隔开。代码语法可写为:
    字典名 = dict(键1名称 = 值1名称, 键2名称 = 值2名称, …键n名称 = 值n名称)
  2. 字典生成式。代码语法可写为:
{item: price(键值对由item为键,price为值构成) for item(取自可迭代对象1的元素), price(取值于可迭代对象2的元素) in zip(可迭代对象1如列表,可迭代对象2)}

内置函数zip()可以将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。
方法1,2 的代码示例

'''使用花括号进行创建字典'''
scores = {'张三': 100, '李四': 95, '王二麻子': 96}
print(scores)
dict_null={}#创建空字典
print(dict_null, type(dict_null))
''''使用dict()函数进行创建'''
scores1 = dict(张三=100, 李四=95, 王二麻子=96)
print(scores1)

输出结果为:

{'张三': 100, '李四': 95, '王二麻子': 96}
{} <class 'dict'>
{'张三': 100, '李四': 95, '王二麻子': 96}

】使用字典生成式,将列表items = [‘fruit’, ‘books’, ‘others’]与列表
prices = [96, 78, 85]构建为字典

items = ['fruit', 'books', 'others']
prices = [96, 78, 85]
dictlist = {item: price for item, price in zip(items, prices)}#zip()函数将两个列表分别的元素相对应打包为元组,item取自items列表,price取自prices列表,然后item与price分别作为字典的键与值构成字典
print(dictlist)
dictlist = {item.upper(): price for item, price in zip(items, prices)}#upper()将字母大写
print(dictlist)

输出结果为:

{'fruit': 96, 'books': 78, 'others': 85}
{'FRUIT': 96, 'BOOKS': 78, 'OTHERS': 85}

字典元素的获取

  1. 使用方括号[]取值, 代码语法为:字典名[键值名]
  2. 使用get()方法取值,代码语法为:字典名.get(键值名)
  3. 获取字典中所有的元素的键。代码语法为:
for item in 字典名:
     print(item)

方法 1 与 2 两者的区别在如果使用[]取值,若字典中不存在指定的key,则会抛出keyError异常;使用get()方法取值,若字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回。

代码演示

scores = {'张三': 100, '李四': 95, '王二麻子': 96}
'''使用方括号[]取值'''
print(scores['张三'])
print(scores['王五'])
'''使用get()方法取值'''
print(scores.get('张三'))
print(scores.get('王五'))
print(scores.get('赵四', 99))#99是在查找'赵四'所对应的value不存在时,提供的一个默认值
print(scores)
for item in scores:
    #print(item)#单纯输出字典中所有的键
    #print(scores[item])#使用方括号输出值
    #print(scores.get(item))#使用get()方法输出值
    print(item, scores[item], scores.get(item))

输出结果为:

100
KeyError: '王五'

100
None
99

张三 100 100
李四 95 95
王二麻子 96 96

字典键key的判断

使用in 或 not in 判断键key,指定的key在字典中存在则返回True,不存在则返回False

scores = {'张三': 100, '李四': 95, '王二麻子': 96}
print('张三' in scores)
print('张三' not in scores)

输出结果为:
True
False

字典元素的删除

  1. 使用del删除字典中的元素,代码语法为:
del 列表名[键名key]]
  1. 使用del可整体删除字典,则其代码语法为:
del 列表名
  1. 使用clear()方法可清空字典中的元素

代码演示

scores = {'张三': 100, '李四': 95, '王二麻子': 96}
del scores['张三']
print(scores)
scores.clear()
print(scores)

输出结果为:

{'李四': 95, '王二麻子': 96}
{}

字典元素的新增与修改

代码语法为:

列表名[键key] = 值value

代码演示

scores = {'张三': 100, '李四': 95, '王二麻子': 96}
scores['刘能'] = 70
print(scores)

scores['张三']=98
print(scores)

输出结果为:

{'张三': 100, '李四': 95, '王二麻子': 96, '刘能': 70}
{'张三': 98, '李四': 95, '王二麻子': 96, '刘能': 70}

获取字典视图

获取字典视图有如下三种方法:

  1. key()获取字典中所有键key
  2. values()获取字典中所有值values
  3. items()获取字典中所有的键key,值value对
scores = {'张三': 98, '李四': 95, '王二麻子': 96, '刘能': 70}
print(scores.keys())
print(type(scores.keys()))
print(scores.values())
print(type(scores.values()))
print(scores.items())

输出结果为

dict_keys(['张三', '李四', '王二麻子', '刘能'])
<class 'dict_keys'>
dict_values([98, 95, 96, 70])
<class 'dict_values'>
dict_items([('张三', 98), ('李四', 95), ('王二麻子', 96), ('刘能', 70)])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值