Python小白教学系列 | 字典

「爱情、让人受尽委屈。」 2022-02-24 09:36 620阅读 0赞

字典概述

字典和列表类似,是可变序列,与列表不同的是,字典是无序的可变序列,保存的内容是以 键值对 的形式存放的。类似于的新华字典中拼音和汉字的关系,通过音节表可以快速找到对应的汉字。其中音节表相当于字典里的键(key),其对应的汉字相当于值(value)。键(key)是唯一的,而值(value)可以是多个。

一、字典的主要特征

1、通过键(key)而不是通过索引来读取字典
2、字典是任意对象的无序集合
3、字典可变,可任意镶嵌
4、字典的键必须唯一(如果同一个键出现两次,则后一个键会被记住)
5、字典中的键必须不可变(键可以使用数字,字符串或者元组,但不能使用列表)

二、字典的创建和删除

1、字典的创建

a)语法解释

定义字典时,每个元素都包含两个部分“键(key)“和“值(value)“。
创建字典时,在键(key)和值(value)只见用冒号(:)分隔,相邻两个元素用逗号(,)分隔,所有元素用{}括起来。

b)创建含有元素的字典
示例:

  1. dic = { 1: "ssh", 2: "ftp", "key": "value"} #冒号前的为键,冒号后的为值
  2. print(dic)
  3. 运行结果:
  4. { 1: 'ssh', 2: 'ftp', 'key': 'value'}

c)创建空字典

建立空字典有两种方法

  1. dic1={ } #方法一
  2. print(dic1)
  3. 运行结果:
  4. { }
  5. dic2=dict() #方法二
  6. print(dic2)
  7. 运行结果:
  8. { }

d)通过映射函数创建字典

zip()函数:用于将多个列表或元组对应的位置元素组成为元组,并返回到zip对象
返回值:如果两个列表长度不相等,则与最短的列表长度相同

  1. key = [1, 2, 3, 4] #作为键的列表
  2. value = ['列表', '元组', '字典'] #作为值的列表
  3. dic = dict(zip(key, value)) #转化为字典
  4. print(dic) #打印字典
  5. 运行结果:
  6. { 1: '列表', 2: '元组', 3: '字典'}

e)通过给定的键值对创建字典

  1. dic = dict(a = '列表', b = '元组', c = '字典')
  2. print(dic)
  3. 运行结果:
  4. { 'a': '列表', 'b': '元组', 'c': '字典'}

2、删除字典

  1. del dic #dic为字典名

3、清空字典元素

清空后为空字典

  1. dic.clear() #dic为字典名

二、通过“键值对“访问字典

根据键(key)输出值(value)

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子''弼马温', '猪八戒': '二师兄'}
  2. print(dic['孙尚香'])
  3. 运行结果:
  4. 大小姐

指定的键不存在时:

  1. print(dic['李白'])

运行结果:
在这里插入图片描述
很难看!

一般在实际开发中,很可能不知道字典里存在什么键,但为了视界效果,更好的用户体验,所以要避免异常产生!

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子''弼马温', '猪八戒': '二师兄'}
  2. print("李白的绰号是: ",dic['李白'] if '' in dic else '字典里没有此人!')
  3. 运行结果:
  4. 李白的绰号是: 字典里没有此人!

另外:Python推荐的方法是使用字典对象的get()方法获取指定键的值。

get()格式:

  1. get(key,'key不存在返回值')

示例:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. print('孙悟空的绰号是: ',dic.get('孙悟空','字典里没有此人!'))
  3. 运行结果:
  4. 孙悟空的绰号是: 猴子 弼马温
  5. print('李白的绰号是: ',dic.get('李白','字典里没有此人!'))
  6. 运行结果:
  7. 李白的绰号是: 字典里没有此人!

三、遍历字典

1、使用字典对象的 items() 方法可以获取字典的“键值对”的元组列表。

items()的语法格式:

  1. dic.items() #dic为字典对象

示例:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. print(dic.items())
  3. 运行结果:
  4. dict_items([('孙尚香', '大小姐'), ('孙悟空', '猴子 弼马温'), ('猪八戒', '二师兄')])

2、获取具体的 键值对

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. for items in dic.items() :
  3. print(items)
  4. 运行结果:
  5. ('孙尚香', '大小姐')
  6. ('孙悟空', '猴子 弼马温')
  7. ('猪八戒', '二师兄')

3、获取具体的 每个 键 和 值

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. for k,v in dic.items() :
  3. print(k,'的绰号为:',v)
  4. 运行结果:
  5. 孙尚香 的绰号为: 大小姐
  6. 孙悟空 的绰号为: 猴子 弼马温
  7. 猪八戒 的绰号为: 二师兄

4、单独获取 键 或 值

  1. dic.keys() #dic为字典对象
  2. dic.values()

示例:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. print(dic.keys())
  3. print(dic.values())
  4. 运行结果:
  5. dict_keys(['孙尚香', '孙悟空', '猪八戒'])
  6. dict_values(['大小姐', '猴子 弼马温', '二师兄'])

四、添加、修改和删除 字典元素

1、添加 字典元素

格式:

  1. dic[key] = value

示例:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. dic['李白']='诗仙'
  3. print(dic)
  4. 运行结果:
  5. { '孙尚香': '大小姐', '孙悟空': '猴子 弼马温', '猪八戒': '二师兄', '李白': '诗仙'}

2、修改 字典元素

格式:

  1. #当key包含于字典时,将使用新的值替换原来该键的值
  2. dic[key] = value

示例:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. dic['孙悟空']='大师兄'
  3. print(dic)
  4. 运行结果:
  5. { '孙尚香': '大小姐', '孙悟空': '大师兄', '猪八戒': '二师兄'}

3、删除 字典元素

格式:

  1. del dic[key] #dic为目标字典
  2. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  3. del dic['孙悟空']
  4. print(dic)
  5. 运行结果:
  6. { '孙尚香': '大小姐', '猪八戒': '二师兄'}

如果没有要删除的元素,就会报错,很难看!
推荐用以下代码:

  1. dic = { '孙尚香': '大小姐', '孙悟空': '猴子'' ''弼马温', '猪八戒': '二师兄'}
  2. if '李白' in dic :
  3. del dic['李白']
  4. print(dic)
  5. else:
  6. print('没有此人!')

五、字典推导式

利用random标准库随机产生数字,从而快速生成字典

  1. import random #导入random标准库
  2. dic={ i:random.randint(10,100) for i in range(1,5)}
  3. print("生成字典为:",dic)
  4. 运行结果:
  5. 生成字典为: { 1: 78, 2: 62, 3: 54, 4: 76}

发表评论

表情:
评论列表 (有 0 条评论,620人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python教学系列 | 集合

    集合概述 Python中的集合和数学中的集合类似,可以保存不重复的元素。它有可变集合(set)和不可变集合(frozenset)两种。 本文讲解的是set集合(无序可

    相关 Python教学系列| 类和对象 详解

    前言 类是面向对象编程的核心概念,面向对象程序设计是在面向过程程序设计的基础上发展而来的,它比面对过程编程具有更强的灵活性和扩展性。在此提醒初学者:想要在编程这条路上走的