【Python】集合

文章目录

  • 前言
  • 一、字典
  • 二、创建字典
    • [1. 创建空字典](#1. 创建空字典)
    • [2. 创建非空字典](#2. 创建非空字典)
  • 二、操作字典
    • [1. 增加字典元素](#1. 增加字典元素)
      • [1.1 `thisdict[new_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 `thisdict[key]`](#3.3 thisdict[key])
    • [4. 修改字典元素](#4. 修改字典元素)
      • [4.1 `thisdict[key] = 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相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

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

相关推荐
威联通安全存储2 小时前
严谨性的数字基石:某精密医疗器械企业基于威联通的数据治理实践
运维·数据库·python
俩娃妈教编程2 小时前
C++基础知识点:位运算
java·开发语言·jvm·c++·位运算
zhoupenghui1682 小时前
golang 锁实现原理与解析&锁机制(sync)种类与举例说明以及其使用场景
开发语言·后端·golang·mutex·wait·lock·sync
计算机徐师兄2 小时前
Python基于Django的汉语文本阅读难度分级系统(附源码,文档说明)
python·机器学习·django·汉语文本阅读难度分级系统·python文本阅读难度分级·文本阅读难度分级系统·汉语文本阅读难度分级
路弥行至2 小时前
linux运行脚本出现错误信息 /bin/bash^M: bad interpreter解决方法
linux·运维·开发语言·经验分享·笔记·其他·bash
一直不明飞行2 小时前
C++ pari使用的两个注意事项
开发语言·c++
LinuxGeek10242 小时前
从Centos-7迁移和升级到(银河麒麟)Kylin V7的教程
python·centos·kylin
烟锁池塘柳02 小时前
【Anaconda】修改 Conda 环境存储路径的几种方法(详细教程)
python·pycharm·conda
wefly20172 小时前
无需安装的 M3U8 在线播放器,快速实现 HLS 流预览与调试
java·开发语言·python·开发工具