首页 > 编程语言 >【Python基础】dict(字典)

【Python基础】dict(字典)

时间:2024-01-10 09:56:20浏览次数:35  
标签:name Python value print dict key msg 字典

简介介绍

dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型

  • 字典同样可以用来 存储多个数据
    通常用于存储 描述一个 物体 的相关信息

  • 和列表的区别
    列表 是 有序 的对象集合
    字典 是 无序 的对象集合

  • 字典用 {} 定义

字典特性

* 字典使用 键值对 存储数据,键值对之间使用 , 分隔
* 键 key 是索引
* 值 value 是数据
* 键 和 值 之间使用 : 分隔
* 键必须是唯一的
* key 必须为不可变数据类型(字符串、数字)
* 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
* 一个key对应的value可存放任意数据类型,可修改、可以不唯一
* 可嵌套,即value也可以是dict
* py3.7之前是无序的,3.7开始变成有序的。 ordered_dict
* 查询速度快,且不受dict的大小影响,至于为什么快?需要了解hash O (1)

字典用法

创建字典的两种方式

#第一种方式
msg1 = {
    "name":"小C学安全",
    "age":30
}
#第二种方式
msg2 = dict(name="小C学安全",age=30)

print(msg1)
print(msg2)

字典增删改查

msg={
    "name":"小C学安全",
    "age":30
}

#字典增加,修改
#字典[key] = value
msg["age"]=100
print(msg)
"""
{'name': '小C学安全', 'age': 100}
如果key存在,修改数据
如果key不存在,新建键值对
"""

msg.setdefault("height","180cm")
print(msg)
"""
{'name': '小C学安全', 'age': 100, 'height': '180cm'}
如果key存在,不会修改数据
如果key不存在,新建键值对
"""
msg2 ={
    "height":"180cm"
}
msg.update(msg2)
print(msg)
"""
{'name': '小C学安全', 'age': 100, 'height': '180cm'}
将msg2字典数据合并到msg1
"""
#字典查询
"""
字典[key] 从字典中取值,key不存在会报错
字典.get(key) 从字典中取值,key不存在不会报错
字典.keys() 所有key列表
字典.values() 所有value 列表
字典.items() 所有(key,value)元组列表
"""
# print(f'通过msg["name"]直接查询结果:{msg["name"]}')
#通过msg["name"]直接查询结果:小C学安全
# print(f'通过msg.get("name")直接查询结果:{msg.get("name")}')
#通过msg.get("name")直接查询结果:小C学安全
# print(f'查询所有key列表,msg.keys():{msg.keys()}')
#查询所有key列表,msg.keys():dict_keys(['name', 'age'])
# print(f'查询所有values,msg.values():{msg.values()}')
#查询所有values,msg.values():dict_values(['小C学安全', 30])
# print(f'查询所有(key,value)元组列表,msg.items():{msg.items()}')
#查询所有(key,value)元组列表,msg.items():dict_items([('name', '小C学安全'), ('age', 30)])
#批量创建
# names=["小C学安全","Python"]
# msg2=dict.fromkeys(names,"2")
# print(msg2)
# #{'小C学安全': '2', 'Python': '2'}
#拷贝
# msg1 =msg.copy()
# print(msg1)
#{'name': '小C学安全', 'age': 30}


#字典删除
del msg["name"]
print(msg)
"""
{'age': 100, 'height': '180cm'}
删除键值对,key不存在会报错
字典.pop(key) 删除指定键值对,key不存在会报错
字典.popitem() 随机删除一个键值对3.7以前
字典.clear() 清空字典数据
"""

字典循环遍历

msg={
    "name":"小C学安全",
    "age":30
}
#循环key值
for key in msg.keys():
    print(key)
"""
name
age
"""
for key,values in msg.items():
    print(key,values)


"""
name 小C学安全
age 30
"""

for key in msg:
    print(key)

"""
name
age
"""

字典推导式

"""
语法一:
    key:字典中的key
    value:字典中的value
    dict.items():序列
    condition:条件表达式
    key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
    value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
'''

{key_exp:value_exp for key,value in dict.items() if condition}

'''
语法二:
    key:字典中的key
    value:字典中的value
    dict.items():序列
    condition:条件表达式
    key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
    value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
    value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理

'''

{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}
"""
# 案例一:获取字典中key值是小写字母的键值对
dict1 = {"a": 10, "B": 20, "C": True, "D": "hello world", "e": "小C学安全"}
dict2 = {key: value for key, value in dict1.items() if key.islower()}
print(dict2)

# 案例二:将字典中的所有key设置为小写
dict3 = {key.lower(): value for key, value in dict1.items()}
print(dict3)

# 案例三:将字典中所有key是小写字母的value统一赋值为'error'
dict4 = {key: value if key.isupper() else "error" for key, value in dict1.items()}
print(dict4)

标签:name,Python,value,print,dict,key,msg,字典
From: https://www.cnblogs.com/fuchangjiang/p/17955871

相关文章

  • # yyds干货盘点 # 盘点一个AI都无法解决的Python基础题目(下篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【大侠】问了一个Pandas实战的问题,一起来看看吧。上一篇文章说到,看上去AI给的答案,似乎让【大侠】不满意,遂来白银交流群问问大佬们。这一篇文章,我们一起来看看其他大佬给的代码。二、实现过程前面的文章中,我们看到了【瑜亮老师】和......
  • python第三节:Str字符串类型(1)
    第二节:Str字符串类型python中处理文本数据是用str类型,不像其他语言区分字符和字符串,统一使用str类型。str在创建后是不可变的。在python中字符类型相当于长度是1的字符串类型。以下三种方式包裹的字符都算作字符串:单引号:'允许包含有"双"引号'双引号:"允许嵌入'单'引号"三重......
  • python通过RS485、Modbus协议读取/修改仪表数据
    目标python通过RS485的Modbus协议读取仪表相应的寄存器数据。准备工作软件安装第三方库:serial、pyserial、modbus_tkpipinstallserialpipinstallpyserialpipinstallmodbus_tk硬件一根USB转RS485的转接线(电脑本身不带RS485接口时需要)一个带Modbus通讯的仪表(例子中使用的时一......
  • python系列教程218——生成器表达式
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • 在Django中,`python manage.py makemigrations`和`python manage.py migrate`是两个用
    在Django中,`pythonmanage.pymakemigrations`和`pythonmanage.pymigrate`是两个用于数据库迁移的命令,它们的主要区别在于:-`pythonmanage.pymakemigrations`:这个命令主要是记录我们对`models.py`的所有改动,并且将这个改动迁移到`migrations`这个文件下生成一个文件,例如:`0001`......
  • Python入门学习规划
    新手学习Python,可以参考以下计划:基础概念学习(预计1周):熟悉Python的基本语法和数据类型(1天)学习控制流程(if、while、for等)(1天)学习函数和模块(1天)学习面向对象编程(类和对象)(1天)学习文件操作(1天)实战练习(预计2周):练习使用Python进行数据处理和科学计算(1周)练习使用Python进行网络编程(如WebS......
  • 使用Python的requests库在Linux中进行HTTP通信
    在Linux中,使用Python的requests库进行HTTP通信是一种高效且简洁的方法。requests库为发送HTTP请求提供了丰富的功能,包括GET、POST、PUT、DELETE等常见的HTTP方法,以及处理cookies、会话、参数等高级功能。首先,确保您的Linux系统已经安装了Python和requests库。如果尚未安装,可以使用......
  • Python制作进度条,原来有这么多方法
    如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。在这几行代码中,我们可以看看如何在命令行脚本以及PySimpleGUIUI中添加进度条。下文将介绍4个常用的Python进度条库:Progress第一个要介绍的Python库是Pr......
  • 这些常见的python编码习惯,你都会吗
    本文分享自华为云社区《不得不知的十个常见PY编码习惯》,作者:码乐。简介语言在发展和变化,编码习惯也在发生改变。这里简单聊聊17个python中常见的编码习惯或者风格。1,可变数据结构:注意在函数变量不要使用它deffoo(x=[]): x.append(1) print(x)>>>foo()[1]>>>f......
  • 一个简单采集唯品会的Python采集程序
    今天要分享的是一个简单采集唯品会的Python采集程序,用于采集唯品会商品详情页面的内容。这是之前一个粉丝的要求,因为之前写了并不是用的python,所以这次给大家补上,一起来看看吧。```pythonimportrequestsfrombs4importBeautifulSoupimportproxybrokeraspb#设置代理pro......