Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python干货——字典

python干货——字典

原创
作者头像
Java学术趴
发布于 2022-06-02 12:12:46
发布于 2022-06-02 12:12:46
1.1K00
代码可运行
举报
文章被收录于专栏:Java全栈·Java全栈·
运行总次数:0
代码可运行

👨‍🎓作者: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
代码运行次数:0
运行
AI代码解释
复制
# 字典的创建。字典中可以存储任意类型的数据
# 创建一个空字典
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
代码运行次数:0
运行
AI代码解释
复制
# key是不可变的类型。使用字典、字符串、数字都可以
# key不可以使用 列表
dictionary: dict = {[1, 'abc']: True}
# 使用列表最为key会报错
复制代码

8.2.2 查询字典中的数据

查询键值的时候,键值是什么类型使用什么类型的变量接收即可。
  • 直接使用key查询。
  • 语法格式 d[key] : 如果写了不存在的key会报错
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 直接使用key查询
print(dictionary['name'])
# 张三
复制代码
  • 使用get(key)获取键值 : 当key不存在的时候不会报错,返回一个None值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用 get(key) 获取
print(dictionary.get('name'))
# 张三
复制代码
  • keys获取所有的key值。针对如何使用其中的值和以下的 values 方法一致
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# keys获取所有的key值
print(dictionary.keys())
# dict_keys(['name', 'age', 'flag'])
# 会把key值合成一个列表。但是返回的不是list列表
复制代码
  • values获取所有的values值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查询字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
# 查询字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
# 查询字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
# len() 获取字典的长度,也就是key的个数
print(len(dictionary))
# 3
复制代码
  • in / not in : 判断key是否存在,返回值是bool类型的数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# in / not in : 判断key值是否存在
print('name' in dictionary)
# True
print('name' not in dictionary)
# False
复制代码

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

  • 使用直接赋值的方法增加、修改元素
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 增加字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
# 增加字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
# 增加字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
#  删除字典中的数据
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
代码运行次数:0
运行
AI代码解释
复制
del dictionary['name']
print(dictionary)
# {'age': 20, 'flag': True}
​
# 删除多个元素会报错
del dictionary['name', 'age']
print(dictionary)
复制代码
  • clear() : 清空字典中的所有元素
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# clear() 清空字段中的所有数据
dictionary.clear()
print(dictionary)
# {}
复制代码

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

  • str(字典) : 将字典转换为一个字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
​
# str() 将字典转换为字符串
print(str(dictionary))
# {'name': '张三', 'age': 20, 'flag': True}print(type(str(dictionary)))
# <class 'str'>
复制代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Python字典包含了以下内置方法:
1、radiansdict.clear():删除字典内所有元素
2、radiansdict.copy():返回一个字典的浅复制
3、radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4、radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default5、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
代码运行次数:0
运行
AI代码解释
复制
#  对字典中的数据进行排序
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
#  常用的几种运算方式
# 字典
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
代码运行次数:0
运行
AI代码解释
复制
#  常用的几种运算方式
# 字典
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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python dict(字典)
Python dict即字典,是一种非常有用的数据结构,相当于其他语言的Map,这种数据结构采用键值对(key-value)形式存储,具有非常快的查询速度,即使在数据量十分庞大的情况下也依然如此。 P
Steve Wang
2018/02/05
2K0
Python dict(字典)
Python入门之字典的操作详解
这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下: Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。 一、创建字典 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 也可如此创建字典 dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 9
Jetpropelledsnake21
2018/05/03
1.1K0
Python干货——内置函数(2)
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 👋大家好!我是你们的老朋友Java学术趴。任何的语言都离不开函数,都包括内置函数和自定义函数,函数的作用就是对功能进行封装以便于无效调用。 所谓内置函数就是可以直接拿过来使用的函数,Python已经帮我们内
Java学术趴
2022/06/04
1.4K0
Python干货——内置函数(2)
Python字典知识大全
主要存储具有映射关系的数据
Python知识大全
2020/02/13
8060
Python字典知识大全
快速学习-Python字典
注意: 1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。 2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝 3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。
cwl_java
2020/03/23
4420
Python干货——函数(2)
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 👋大家好!我是你们的老朋友Java学术趴。任何的语言都离不开函数,都包括内置函数和自定义函数,函数的作用就是对功能进行封装以便于无效调用。 9.4 函数的返回值 函数执行完之后会返回一个对象,如果函数中存在
Java学术趴
2022/06/04
8820
Python干货——函数(2)
python干货——函数
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 👋大家好!我是你们的老朋友Java学术趴。任何的语言都离不开函数,都包括内置函数和自定义函数,函数的作用就是对功能进行封装以便于无效调用。 9.1 函数的基础 函数就是一段含有特殊功能的代码块 使用函数完成
Java学术趴
2022/06/03
7580
python干货——函数
教师妹学python之五:数据结构
现实世界中,我们经常需要一些“容器”来存储生活中使用的小物件。比如使用存钱罐存硬币、抽屉存媳妇用的护肤品、首饰等。通常我们如果将硬币、护肤品当成前文讲到的基本数据类型的实例,那么存钱罐、抽屉就可以类比成存储多个基本数据类型实例的容器,即Python的数据结构。
互联网金融打杂
2022/08/01
4550
教师妹学python之五:数据结构
python教程(七)·字典
在现实生活中,查英语字典的时候,我们通常根据单词来查找意思。而python中的字典也是类似的,根据特定的 “键”(单词)来查找 “值”(意思)。
py3study
2020/01/17
7680
Python学习笔记(12)
本期讲述字典相关知识。 字典练习程序,字典详解(创建字典、访问字典中的值、修改字典、删除字典、字典的特性和内置方法函数) 程序练习: 利用字典的特性编写一个程序,功能图如下: 程序如下: print
张树臣
2018/05/15
8460
day08-字典
字典(Dict)是一种可变、无序的数据类型;那等等...我们回忆一下,字符串列表元祖是什么样的?
似小陈吖
2024/01/18
1860
Python干货——内置函数
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 👋大家好!我是你们的老朋友Java学术趴。任何的语言都离不开函数,都包括内置函数和自定义函数,函数的作用就是对功能进行封装以便于无效调用。 所谓内置函数就是可以直接拿过来使用的函数,Python已经帮我们内
Java学术趴
2022/06/04
9120
Python干货——内置函数
02 . Python之数据类型
变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符.
iginkgo18
2020/09/27
1.8K0
02 . Python之数据类型
Python3 基本数据结构总结
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
chaibubble
2019/09/25
1.2K0
大数据技术之_24_电影推荐系统项目_02_Python 基础语法复习
第六章 Python 基础语法 6.1 Python 综述 6.1.1 Python 是什么   Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。   Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。   ython 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。   Python 是交互式语言:这意味着,我们可以在一个 Python 提示符后面直接
黑泽君
2019/05/17
2.5K0
python字典
本篇将介绍Python里面的字典,更多内容请参考:Python学习指南 Python是什么? Python内置了字典dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值对(key-value)存储,具有极快的查找速度。 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list: >>>names = ['Michael', 'Bob', 'Tracy'] >>>scores = [95, 75, 85] 给定一个名字,要查找相应的速度,就先
用户1174963
2018/01/17
2.8K0
Python 字典Dictionary详解
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
用户7886150
2021/01/13
8680
python的数据类型简介
ipython:原生python不具有命令行补全等功能,这个工具提供了类似shell的功能,方便学习使用 安装: wget https://repo.continuum.io/archive/Anaconda2-5.1.0-Linux-x86_64.sh #利用这个工具来管理python版本 sh Anaconda2-5.1.0-Linux-x86_64.sh conda search python conda create -n py27 python=2.7 Anaconda #创建2.7的环境
py3study
2020/01/14
8840
计算机二级Python考点解析11
序列对应于数学中的数列,它是一串有序的元素向量,当我们想要锁定数列中的某一个数值时,通过下标索引便可以准确地找出我们所需要的那个值。序列类型相比于集合类型在实际应用中使用频率更高。通用的序列操作,即字符串、列表 、元组都可以进行的操作,诸如索引、分片、序列相加、乘法、成员资格、长度、最小值、最大值等方法。
Minerva
2020/05/25
1.2K0
Python数据内容
字符串作为python中最为常见的一种结构,它最典型的特征就是有引号,无论是单引号,或是双引号,还是三引号,它们都是字符串。
我被狗咬了
2019/09/23
9080
相关推荐
Python dict(字典)
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验