前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python干货——字典

python干货——字典

原创
作者头像
Java学术趴
发布2022-06-02 20:12:46
9920
发布2022-06-02 20:12:46
举报
文章被收录于专栏:Java全栈·

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

👋大家好!我是你们的老朋友Java学术趴。我今天又来喽!!今天继续给大家分享Python语言干货知识。

第八章 字典

8.1 字段的概念

  • 字典是Python中一种重要的数据类型,可以存储任意类型的数据
  • 字典中的数据是以键值对的方式存储的,利用花括号进行包裹。和Java中的Map集合类似
  • 字典和列表一样,支持对其中的元素进行增删改查
  • 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

字典是除列表以外Python中最灵活的数据类型。

字典也被称为哈希表、关联数组

注意点:

  • 字典中key不可以重读,因为在字典中一次的操作都是基于key的。但是值可以重复
  • 字典的key只能是不可以改变的数据。字符串、数字、元组(元组不可以改变)
  • 字典是一个无序的数据集合,非序列,不支持索引访问,只能通过键key去访问,效率很高。
  • 字典是可变类型,支持增删改查

8.2 字典类型中常用的方法

8.2.1 定义字典类型的数据

语法格式:dictionary: dict = {}

代码语言:javascript
复制
# 字典的创建。字典中可以存储任意类型的数据
# 创建一个空字典
dictionary: dict = {}
print(dictionary)
# {}
​
# 查看类型
print(type(dictionary))
# <class 'dict'>
​
dictionary: dict = {"name": '张三', 'age': 20, 'flag': True}
print(dictionary)
# {'name': '张三', 'age': 20, 'flag': True}
​
# 字典类型中存储 列表
dictionary: dict = {"name": '张三', 'arr': [1, True, 'abc']}
print(dictionary)
# {'name': '张三', 'arr': [1, True, 'abc']}
​
# 字典类型中存储 字典
dictionary: dict = {"name": '张三', 'arr': {'name': '李四', 'bool': True}}
print(dictionary)
# {'name': '张三', 'arr': {'name': '李四', 'bool': True}}
​
# 注意:key值必须是唯一的,如果重复第二个的键值会覆盖第一个。value值可以重复
复制代码

重点:如果键重复,那么第二个键值会覆盖第一个

key可以使用的类型

代码语言:javascript
复制
# key是不可变的类型。使用字典、字符串、数字都可以
# key不可以使用 列表
dictionary: dict = {[1, 'abc']: True}
# 使用列表最为key会报错
复制代码

8.2.2 查询字典中的数据

查询键值的时候,键值是什么类型使用什么类型的变量接收即可。
  • 直接使用key查询。
  • 语法格式 d[key] : 如果写了不存在的key会报错
代码语言:javascript
复制
# 直接使用key查询
print(dictionary['name'])
# 张三
复制代码
  • 使用get(key)获取键值 : 当key不存在的时候不会报错,返回一个None值
代码语言:javascript
复制
# 使用 get(key) 获取
print(dictionary.get('name'))
# 张三
复制代码
  • keys获取所有的key值。针对如何使用其中的值和以下的 values 方法一致
代码语言:javascript
复制
# keys获取所有的key值
print(dictionary.keys())
# dict_keys(['name', 'age', 'flag'])
# 会把key值合成一个列表。但是返回的不是list列表
复制代码
  • values获取所有的values值
代码语言:javascript
复制
# 查询字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
print(dictionary.values())
# dict_values(['张三', 20, True])
# 所有的value值会合成一个列表
# 但是返回的不是一个列表类型的数据,我们使用一个列表类型的变量接收不到
charList: list = dictionary.values()
# 以上的列表变量接收不到这个返回的数据
print(charList[0])
# 报错。不可以直接使用下标获取其中的value值
​
# 使用方式
# 使用循环遍历这个values的结果可以获取到其中的value值
# 我们可以自定义一个列表,来接收每次循环遍历的value值
# 之后我们操作自定义的这个列表即可间接的获取字典中的所有value值
charList: list = []
for data in dictionary.values():
    charList.append(data)
    pass
print(charList[0])
# 张三
print(charList[0:3])
# ['张三', 20, True]
复制代码
  • items获取所有的键和值
代码语言:javascript
复制
# 查询字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# item获取所有的键和值
print(dictionary.items())
# dict_items([('name', '张三'), ('age', 20), ('flag', True)])
​
# key代表字典中的key值,value代表字典中的value值
# 可以定义两个列表分别获存储获取到的 key 和 value值
for key, value in dictionary.items():
    print(key, value, end=" ")
# name 张三 age 20 flag True 
复制代码
  • 使用 key 获取所有的键和键值
代码语言:javascript
复制
# 查询字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# 使用 key 获取其中的 key和value
for key in dictionary:
    print(key, dictionary[key], end=' ')
# name 张三 age 20 flag True
​
# key和value值可以分别存储到两个自定义的列表中
复制代码
  • len() 获取字典的长度,也就是key的长度
代码语言:javascript
复制
# len() 获取字典的长度,也就是key的个数
print(len(dictionary))
# 3
复制代码
  • in / not in : 判断key是否存在,返回值是bool类型的数据
代码语言:javascript
复制
# in / not in : 判断key值是否存在
print('name' in dictionary)
# True
print('name' not in dictionary)
# False
复制代码

8.2.3 增加、修改字典中的数据

  • 使用直接赋值的方法增加、修改元素
代码语言:javascript
复制
# 增加字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# 增加一个元素,当key值存在的时候就修改value值
# 当key值不存在的时候新增一个
# 当key值存在的时候修改value值
dictionary['name'] = '李四'
print(dictionary)
# {'name': '李四', 'age': 20, 'flag': True}
​
# 当key值不存在的时候新增一个元素
dictionary['room'] = 'Python1005'
print(dictionary)
# {'name': '李四', 'age': 20, 'flag': True, 'room': 'Python1005'}
复制代码
  • 使用 update 方法向字典中添加或者更新数据。没有返回值
代码语言:javascript
复制
# 增加字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# 使用 update 方法向字典中添加和修改元素
# 当key存在的时候就修改元素
dictionary.update({'name': '李四'})
print(dictionary)
# {'name': '李四', 'age': 20, 'flag': True}
​
# 当 key 值不存在的时候就添加元素
dictionary.update({'room': 'Python1005'})
print(dictionary)
# {'name': '李四', 'age': 20, 'flag': True, 'room': 'Python1005'}
复制代码
  • 使用 updata 将一个字典赋值给另一个字典
代码语言:javascript
复制
# 增加字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# 使用 update 可以把一个字典中的数据赋值给另一个字典
dictionary2: dict = {}
dictionary2.update(dictionary)
print(dictionary2)
# {'name': '张三', 'age': 20, 'flag': True}
复制代码

8.2.4 删除字典元素

  • pop(key) : 移除指定的键值对。返回值是删除键值对的 value 值
  • 当删除的key值不存在的时候会报错
  • 不可以一次删除多个元素
代码语言:javascript
复制
#  删除字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# pop(key) 删除指定的键值对。当key值不存在的时候会报错
char = dictionary.pop('name')
print(char)
# 张三
print(dictionary)
# {'age': 20, 'flag': True}
​
# 当删除的key不存在的时候报错
dictionary.pop('room')
# 报错
复制代码
  • del : 删除元素。一次只能删除一个,不可以删除多个元素
代码语言:javascript
复制
del dictionary['name']
print(dictionary)
# {'age': 20, 'flag': True}
​
# 删除多个元素会报错
del dictionary['name', 'age']
print(dictionary)
复制代码
  • clear() : 清空字典中的所有元素
代码语言:javascript
复制
# clear() 清空字段中的所有数据
dictionary.clear()
print(dictionary)
# {}
复制代码

8.2.5 字典中的其他内置函数和方法

  • str(字典) : 将字典转换为一个字符串
代码语言:javascript
复制
# 字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# str() 将字典转换为字符串
print(str(dictionary))
# {'name': '张三', 'age': 20, 'flag': True}
​
print(type(str(dictionary)))
# <class 'str'>
复制代码
代码语言:javascript
复制
Python字典包含了以下内置方法:
1、radiansdict.clear():删除字典内所有元素
2、radiansdict.copy():返回一个字典的浅复制
3、radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4、radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值
5、radiansdict.has_key(key):如果键在字典dict里返回true,否则返回false
6、radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
7、radiansdict.keys():以列表返回一个字典所有的键
8、radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
9、radiansdict.update(dict2):把字典dict2的键/值对更新到dict里
10、radiansdict.values():以列表返回字典中的所有值
复制代码

8.2.6 对字典进行排序

在字典中可以对字符串进行排序,会根据ASCII码排序<但是在列表中不可以对字符串进行排序,会报错

字典元素排序的时候必须是一样类型的数据,要不都是字符串,要不就是数字。如果既存在字符串又存在数字会报错。

代码语言:javascript
复制
#  对字典中的数据进行排序
dictionary: dict = {'name': 5, 'age': 20, 'flag': True}
​
# 根据key进行排序
# data代表的就是 key、value组合成的一个列表。key的index是0,value的是1
print(sorted(dictionary.items(), key=lambda data: data[0]))
# [('age', 20), ('flag', True), ('name', '张三')]
​
# 根据value值排序
# 可以使用 reverse 参数来控制升序还是降序,默认是False,升序 
print(sorted(dictionary.items(), key=lambda data: data[1], reverse=False))
# [('flag', True), ('name', 5), ('age', 20)]
​
# 排序的时候只能使用 item() 函数,不可以使用 keys()、values()
print(sorted(dictionary.keys()), key=lambda data: data[0]) 报错
复制代码

8.2.7 常见的几种操作运算

+ : 拼接两个对象。可以是字符串、列表。数字类型相加计算

代码语言:javascript
复制
dictionary: dict = {'name': '张三', 'age': 20}
​
dictionary2: dict = {'room': 'Java1105', 'size': 30}
​
# + : 拼接两个对象。可以是字符串、数字、元组
# 拼接字符串会拼接为一个字符串
# + :不可以直接拼接两个字典类型的数据。字典+字典=报错。但是可以拼接其中的元素
print(dictionary['name'] + ' == ' +dictionary2['room'])
# 张三 == Java1105
​
# +
# 对于数字类型+会进行运算
print(dictionary['age'] + dictionary2['size'])
​
# 50
# + 拼接两种不同的数据类型会报错
print(dictionary['name'] + dictionary2['size'])
# 报错
​
​
​
# + 可以拼接两个列表元素
charList1: list = ['Hello', 20]
charList2: list = ['Word', 30]
print(charList1 + charList2)
# ['Hello', 20, 'Word', 30]
print(charList1[0] + charList2[0])
# HelloWord
print(charList1[1] + charList2[1])
# 50
​
​
​
# + :拼接两个元组
tupleList1: tuple = (1, 2)
tupleList2: tuple = (3, 4)
print(tupleList1 + tupleList2)
# (1, 2, 3, 4)
复制代码

*** : 复制对象。可以复制字符串、元组、列表。数字类型相乘计算**

代码语言:javascript
复制
#  常用的几种运算方式
# 字典
dictionary: dict = {'name': '张三', 'age': 20}
# 列表
charList: list = ['Hello', 20]
# 元组
tupleA: tuple = ('abc', 1)
​
# *: 复制。可以是字符串、元组、列表以及数字
​
# 复制字符串
print('abc' * 2)
# abcabc
​
# 复制数字
print(3 * 2)
# 6
​
# 复制列表
print(charList * 2)
# ['Hello', 20, 'Hello', 20]
​
# 复制元组
print(tupleA * 3)
# ('abc', 1, 'abc', 1, 'abc', 1)
​
# 复制字典
print(dictionary * 3)
# 报错。*不可以复制字典
复制代码

in :对象是否存在。可以判断字符串、列表、元组以及字典。(字典判断的是key值)结果是一个bool值

代码语言:javascript
复制
#  常用的几种运算方式
# 字典
dictionary: dict = {'name': '张三', 'age': 20}
# 列表
charList: list = ['Hello', 20]
# 元组
tupleA: tuple = ('abc', 1)
# 字符串
charStr: str = 'abc'
​
# 查找字符串
print('a' in charStr)
# True
​
# 查找列表
print('Hello' in charList)
# True
​
# 查找元组
print('abc' in tupleA)
# True
​
# 查找字典。字典查找是根据的key值
print('name' in dictionary)
# True
复制代码

元组、列表、字符串都支持索引,只有字典不支持索引

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第八章 字典
    • 8.1 字段的概念
      • 8.2 字典类型中常用的方法
        • 8.2.1 定义字典类型的数据
          • 8.2.2 查询字典中的数据
            • 查询键值的时候,键值是什么类型使用什么类型的变量接收即可。
          • 8.2.3 增加、修改字典中的数据
            • 8.2.4 删除字典元素
              • 8.2.5 字典中的其他内置函数和方法
                • 8.2.6 对字典进行排序
                  • 8.2.7 常见的几种操作运算
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档