【Python】集合

文章目录

  • 前言
  • 一、字典
  • 二、创建字典
    • [1. 创建空字典](#1. 创建空字典)
    • [2. 创建非空字典](#2. 创建非空字典)
  • 二、操作字典
    • [1. 增加字典元素](#1. 增加字典元素)
      • [1.1 `thisdictnew_key = new_value`](#1.1 thisdict[new_key] = new_value)
      • [1.2 `update`函数](#1.2 update函数)
    • [2. 删除字典元素](#2. 删除字典元素)
      • [2.1 `pop`方法](#2.1 pop方法)
      • [2.2 `popitem`方法](#2.2 popitem方法)
    • [3. 查找字典元素](#3. 查找字典元素)
      • [3.1 `in/not in`操作符](#3.1 in/not in操作符)
      • [3.2 `get`方法](#3.2 get方法)
      • [3.3 `thisdictkey`](#3.3 thisdict[key])
    • [4. 修改字典元素](#4. 修改字典元素)
      • [4.1 `thisdictkey = new_value`](#4.1 thisdict[key] = new_value)
    • [5. 遍历字典](#5. 遍历字典)
      • [4.1 `for`循环](#4.1 for循环)
      • [4.2 `keys`方法](#4.2 keys方法)
      • [4.3 `values`方法](#4.3 values方法)
      • [4.4 `items`方法](#4.4 items方法)
    • [5. 合并字典](#5. 合并字典)
      • [4.1 `update`方法](#4.1 update方法)
  • 三、字典常用接口
    • [1. 字典操作](#1. 字典操作)
    • [2. 字典的成员函数](#2. 字典的成员函数)
  • 总结

前言

本文主要介绍了Python中的数据类型------字典的相关概念


一、字典

字典(dict)是一个无序的、可变的、有索引的集合,字典中不存在重复的成员。

字典的本质是哈希表,存储在字典中的元素是可变的、无序的、键唯一的,字典中的元素是以键值对的形式存储的。

字典中的key

字典中存储的key值值的数据类型可以是不同的。

但并非所有类型的数据都可以作为字典的key,因为字典本质是一个哈希表,所以它的key值必须是"可哈希的",即可以计算出一个哈希值

在Python中,使用hash函数可以计算出一个对象的哈希值

python 复制代码
#整数
print(hash(100)) # 100
#小数
print(hash(3.14)) # 322818021289917443
#字符串
print(hash('Jinger')) # 7177143201945965687
#元组
print(hash((2, 'hi', 3.4))) # -8471141487028405883

以上类型都是可哈希的,因为可以通过hash函数计算出它的哈希值

以下的类型是不可哈希的,使用hash函数来计算不可哈希的对象时,程序会抛异常

python 复制代码
#列表
print(hash([1, 3.0, 'Jinger'])) # TypeError: unhashable type: 'list'
#集合
print(hash({1, 3.0, 'Jinger'})) # TypeError: unhashable type: 'set'
#字典
print(hash({1:'hi', 3.0:'123', 'name':'Jinger'})) # TypeError: unhashable type: 'dict'

二、创建字典

1. 创建空字典

使用{}可以创建一个空字典。

python 复制代码
a = {}
print(type(a)) # <class 'dict'>
print(a) # {}

使用dict()方法也可以创建一个空字典。

python 复制代码
a = dict()
print(type(a)) # <class 'dict'>
print(a) # {}

2. 创建非空字典

创建字典时,可以在{}中设置字典的初始值。

python 复制代码
a = {
    1:2,
    'Jinger':5,
}
print(type(a)) # <class 'dict'>
print(a) # {1: 2, 'Jinger': 5}

注意:

  • 字典是一种键值对存储的结构,键和值一一对应;
  • 键值对之间使用,分割,键(key)和值(value)之间使用:分割;
  • 为了便于阅读,建议在创建字典时把多个键值对分行来书写;
  • 最后一个键值对的后面可以写,也可以不写,。

二、操作字典

1. 增加字典元素

1.1 thisdict[new_key] = new_value

使用thisdict[new_key] = new_value的方式可以将键值对<new_key, new_value>插入到字典thisdict中。

python 复制代码
a = {
    1:2,
    'Jinger':3
}
a['hi'] = 100
print(type(a)) # <class 'dict'>
print(a) # {1: 2, 'Jinger': 3, 'hi': 100}

1.2 update函数

使用update方法可以将多个键值对插入到字典中。

python 复制代码
a = {
    1:2,
    'Jinger':3
}
a.update({'hi':100, 30:'test'})
print(type(a)) # <class 'dict'>
print(a) # {1: 2, 'Jinger': 3, 'hi': 100, 30: 'test'}

2. 删除字典元素

2.1 pop方法

使用pop方法可以删除字典中指定键值(key)的键值对

如果指定的key值不存在,则会抛异常。

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
a.pop('name')
print(type(a)) # <class 'dict'>
print(a) # {'id': 1, 'age': 22}
a.pop('Jinger') # KeyError: 'Jinger'

2.2 popitem方法

使用popitem方法可以删除最后插入字典的键值对

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
a.popitem()
print(type(a)) # <class 'dict'>
print(a) # {'id': 1, 'name': 'Jinger'}

注意 :

在Python3.7之前的版本,popitem方法是随机删除一个键值对

3. 查找字典元素

3.1 in/not in操作符

in/not in操作符可以判断指定的key值是否存在于字典中

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print('name' in a) # True
print('name' not in a) # False
print('address' in a) # False
print('address' not in a) # True

3.2 get方法

get方法可以获取指定key值对应的value值。

如果该key值存在,则返回对应的value值;如果该key值不存在,则返回None

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print(a.get('id')) # 1
print(a.get('name')) # Jinger
print(a.get('address')) # None

3.3 thisdict[key]

thisdict[key]方法可以获取指定key值对应的value值。

如果该key值存在,则返回对应的value值;如果该key值不存在,则会抛异常

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print(a['id']) # 1
print(a['name']) # Jinger
print(a['address']) # KeyError: 'address'

4. 修改字典元素

4.1 thisdict[key] = new_value

使用thisdict[key] = new_value可以将key值对应的value值修改为new_value。

如果指定key值不存在,则相当于将键值对<key, new_value>添加到字典中。

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
a['age'] = 18
print(type(a)) # <class 'dict'>
print(a) # {'id': 1, 'name': 'Jinger', 'age': 18}
a['address'] = '208'
print(type(a)) # <class 'dict'>
print(a) #{'id': 1, 'name': 'Jinger', 'age': 18, 'address': '208'}

5. 遍历字典

4.1 for循环

字典是一个可迭代对象,因此可以使用for循环对字典进行遍历。
注意 :

使用for循环对字典进行遍历时,本质是在对字典中的key值进行遍历

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
for key in a:
    print(key, a[key])
# id 1
# name Jinger
# age 22

4.2 keys方法

使用keys方法可以获取到字典中所有key值所组成的列表

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print(a.keys()) # dict_keys(['id', 'name', 'age'])
for key in a.keys():
    print(key, a[key])
# id 1
# name Jinger
# age 22

4.3 values方法

使用values方法可以获取到字典中所有value值所组成的列表

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print(a.values()) # dict_values([1, 'Jinger', 22])
for value in a.values():
    print(value)
# 1
# Jinger
# 22

4.4 items方法

使用items方法可以获取到字典中所有键值对所组成的元组列表

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
print(a.items()) # dict_items([('id', 1), ('name', 'Jinger'), ('age', 22)])
for item in a.items():
    print(item)
# ('id', 1)
# ('name', 'Jinger')
# ('age', 22)
for key, value in a.items():
    print(key, value)
# id 1
# name Jinger
# age 22

5. 合并字典

4.1 update方法

使用update方法,可以将一个字典合并到另一个字典中(例如,a.update(b)就是将字典b中的键值对依次插入到字典a中,该操作不会影响到字典b)

python 复制代码
a = {
    'id':1,
    'name':'Jinger',
    'age':22
}
b = {
    'address':208,
    'high':280
}
a.update(b)
print(type(a)) # <class 'dict'>
print(a) # {'id': 1, 'name': 'Jinger', 'age': 22, 'address': 208, 'high': 280}
print(type(b)) # <class 'dict'>
print(b) # {'address': 208, 'high': 280}

三、字典常用接口

1. 字典操作

字典操作 方式
字典检查 in/not in操作符
添加键值对 thisdict[new_key] = new_value
访问值 thisdict[key]
修改值 thisdict[key] = new_value
字典长度 len()函数

2. 字典的成员函数

成员函数 功能
copy() 复制字典
clear() 清空字典
get() 返回指定key值的value值
update() 向字典中添加多个键值对(合并字典)
pop() 删除指定key值的键值对
popitem() 删除最后插入的键值对
keys() 返回字典中所有``key值组成的列表
values() 返回字典中所有value值组成的列表
items() 返回字典中所有键值对组成的元组列表
fromkeys() 创建一个新字典,以指定的序列元素作为key值,所有的key使用同一个value值
setdefault() 获取指定key值的value值。如果key存在,则返回对应value值;如果key不存在,则插入该key并设置value为默认值,然后返回该默认值value

总结

以上就是今天要讲的内容,本文介绍了Python数据类型------字典的相关概念。本文作者目前也是正在学习Python相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

最后,如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

相关推荐
小咕聊编程12 分钟前
基于Django的个人摄影博客网站设计与开发
后端·python·django
北冥you鱼13 分钟前
Go 语言 GORM 使用 Preload:从关联查询到嵌套预加载的完整实践
开发语言·jvm·golang
论文复现现场19 分钟前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
dingzd9525 分钟前
TikTok账号登录态失效的Cookie字段排查路径
开发语言·php·跨境电商·营销策略
量化炼金 (CodeAlchemy)37 分钟前
【量化研究】美股历史数据获取:Yahoo Finance 转 Zorro 回测格式
python·量化研究·量化交易
曹牧39 分钟前
C#:The operation has timed out
开发语言·c#
你看我名字1 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言
小嘉丶学长1 小时前
Day13 · 列表与元组
linux·运维·服务器·开发语言·python
努力努力再努力wz1 小时前
【Lua入门系列】从 C++ 迭代器到 Lua 迭代器:一文深入理解 Lua 有状态以及无状态迭代器与泛型for、闭包、ipairs、pairs 和 next
开发语言·c++·lua
小小张说故事1 小时前
Python 的 int 为什么不会溢出?拆开 PyLongObject 和它背后那串变长数组
python