👨🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。
☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!
👋大家好!我是你们的老朋友Java学术趴。我今天又来喽!!今天继续给大家分享Python语言干货知识。
字典是除列表以外Python中最灵活的数据类型。
字典也被称为哈希表、关联数组
注意点:
语法格式:dictionary: dict = {}
# 字典的创建。字典中可以存储任意类型的数据
# 创建一个空字典
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可以使用的类型
# key是不可变的类型。使用字典、字符串、数字都可以
# key不可以使用 列表
dictionary: dict = {[1, 'abc']: True}
# 使用列表最为key会报错
复制代码
# 直接使用key查询
print(dictionary['name'])
# 张三
复制代码
# 使用 get(key) 获取
print(dictionary.get('name'))
# 张三
复制代码
# keys获取所有的key值
print(dictionary.keys())
# dict_keys(['name', 'age', 'flag'])
# 会把key值合成一个列表。但是返回的不是list列表
复制代码
# 查询字典中的数据
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]
复制代码
# 查询字典中的数据
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
复制代码
# 查询字典中的数据
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的个数
print(len(dictionary))
# 3
复制代码
# in / not in : 判断key值是否存在
print('name' in dictionary)
# True
print('name' not in dictionary)
# False
复制代码
# 增加字典中的数据
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'}
复制代码
# 增加字典中的数据
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'}
复制代码
# 增加字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
# 使用 update 可以把一个字典中的数据赋值给另一个字典
dictionary2: dict = {}
dictionary2.update(dictionary)
print(dictionary2)
# {'name': '张三', 'age': 20, 'flag': True}
复制代码
# 删除字典中的数据
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 dictionary['name']
print(dictionary)
# {'age': 20, 'flag': True}
# 删除多个元素会报错
del dictionary['name', 'age']
print(dictionary)
复制代码
# clear() 清空字段中的所有数据
dictionary.clear()
print(dictionary)
# {}
复制代码
# 字典中的数据
dictionary: dict = {'name': '张三', 'age': 20, 'flag': True}
# str() 将字典转换为字符串
print(str(dictionary))
# {'name': '张三', 'age': 20, 'flag': True}
print(type(str(dictionary)))
# <class 'str'>
复制代码
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():以列表返回字典中的所有值
复制代码
在字典中可以对字符串进行排序,会根据ASCII码排序<但是在列表中不可以对字符串进行排序,会报错
字典元素排序的时候必须是一样类型的数据,要不都是字符串,要不就是数字。如果既存在字符串又存在数字会报错。
# 对字典中的数据进行排序
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]) 报错
复制代码
+ : 拼接两个对象。可以是字符串、列表。数字类型相加计算
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)
复制代码
*** : 复制对象。可以复制字符串、元组、列表。数字类型相乘计算**
# 常用的几种运算方式
# 字典
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值
# 常用的几种运算方式
# 字典
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 删除。