python字典(dictionary)

2023-11-07

字典

字典组成

字典由键(key)和值(value)组成;字典元素由{}括在一起

dic = {key1 : value1, key2 : value2 }

key是字典中的键,value是该键对应的值;key : value称之为键值对

字典的创建

  • 直接按照定义创建
# 直接按照定义创建
d = {"name":"zhangsan", "age":18, "sex":"man"}
print(d)
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
  • dict()
# 使用dict()方法
d = dict(name = "zhangsan", age = 18, sex = "man")
print(d)
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
# 使用dict()方法 ,将一个元组列表转换为字典
l = [("name" , "zhangsan"), ("age" , 18), ("sex" ,"man")]
d = dict(l)
print(d)
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
# 使用dict()方法 ,将一个打包后的元组转换为字典
key = ("name", "age", "sex")
value = ("zhangsan", 18, "man")
d = dict(zip(key,value))
print(d)
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
  • 使用推导式
dn = {a:a ** 2 for a in range(5)}
print(dn)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
  • 使用zip()将两个序列绑定
l = ["name","age","sex"]
l1 = ["lisi",18,"man"]

d = dict(zip(l,l1))
print(d)
{'name': 'lisi', 'age': 18, 'sex': 'man'}

字典访问

不同于列表元素只能用整数下标访问,字典的key值可以是整数、字符串、元组等,但是不可以用列表,因为列表的值可以是可以改变的。

print(d["name"])
zhangsan

字典的key值是唯一的,但是其对应的值是可修改的

# 通过key访问修改其对应的值value
d["name"] = "lisi"
print(d)
{'name': 'lisi', 'age': 18, 'sex': 'man'}
# 删除字典的键值对
del d["age"]
print(d)
{'name': 'zhangsan', 'sex': 'man'}
# 遍历字典
for key in d:
    print('**key:{}'.format(key))
for value in d:
    print('##value:{}'.format(value))
for itme in d.items():
    print('$$itme:{}'.format(itme))
for key,value in d.items():
    print('&&key:{},value:{}'.format(key,value))
**key:name
**key:sex
##value:name
##value:sex
$$itme:('name', 'zhangsan')
$$itme:('sex', 'man')
&&key:name,value:zhangsan
&&key:sex,value:man

字典的方法

  • 字典的长度(键值对个数)
# len()
print(len(d))
2
  • 将字典传换为字符串输出
# str()
s = str(d)
print(s)
print(type(s))
{'name': 'zhangsan', 'sex': 'man'}
<class 'str'>
  • 字典拷贝
# copy()
d1 = d.copy()
print(d1)
d["name"] = "lisi" # d的修改不会影响到d1
print(d)
print(d1)
{'name': 'zhangsan', 'sex': 'man'}
{'name': 'zhangsan', 'sex': 'man'}
  • 给指定的key值创建出字典
# fromkeys()
keys = ['name','age','sex']
# 不指定value,就是None
d = dict.fromkeys(keys)
print(d)
# 指定默认value
d = dict.fromkeys(keys,"zhangsan")
print(d)

{'name': None, 'age': None, 'sex': None}
{'name': 'zhangsan', 'age': 'zhangsan', 'sex': 'zhangsan'}
  • 获取指定key对应的value
# get()
d = dict(name = "zhangsan", age = 18, sex = "man")
print(d.get("name"))
# 没有对应的值时,返回None
print(d.get("addr"))
# 可以返回指定的值
print(d.get("addr","xian"))
print(d)
zhangsan
None
xian
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
  • 设置默认键值
# setdefault()
# 和get()类似,在key的值不存在时,可设置默认值,不同的是setdefault()会将设置的默认键值对添加到字典中
d.setdefault("name","lisi")
print(d)
d.setdefault("addr","Xian")
print(d)
{'name': 'zhangsan', 'age': 18}
{'name': 'zhangsan', 'age': 18, 'addr': 'Xian'}
  • 获取字典中的键值对
# items()
items = d.items()
print(items)
print(type(items))
# 可通过list()将其转换为列表
l = list(items)
print(l)
print(type(l))
# 可用于遍历字典
for item in d.items():
    print(item)
dict_items([('name', 'zhangsan'), ('age', 'zhangsan'), ('sex', 'zhangsan')])
<class 'dict_items'>
[('name', 'zhangsan'), ('age', 'zhangsan'), ('sex', 'zhangsan')]
<class 'list'>
('name', 'zhangsan')
('age', 'zhangsan')
('sex', 'zhangsan')
  • 删除字典最后一个键值对
# popitem()
print(d)
print("del item is ",d.popitem())
print(d)
{'name': 'zhangsan', 'age': 18, 'addr': 'Xian'}
del item is  ('addr', 'Xian')
{'name': 'zhangsan', 'age': 18}
  • 删除指定key对应的键值对
# pop()
d = dict(name = "zhangsan", age = 18, sex = "man")
print(d)
# key值不存在会报 KeyError
print("del key is age value is ",d.pop("age"))
print(d)
{'name': 'zhangsan', 'age': 18, 'sex': 'man'}
del key is age value is  18
{'name': 'zhangsan', 'sex': 'man'}
  • 更新字典
# update()
# 键值对存在就更新,不存在则添加
print(d)
d.update({"name":"lisi"})
print(d)
d1 = {"name":"zhangsan", "addr":"xian"}
d.update(d1)
print(d)
{'name': 'zhangsan', 'sex': 'man', 'addr': 'xian'}
{'name': 'lisi', 'sex': 'man', 'addr': 'xian'}
{'name': 'zhangsan', 'sex': 'man', 'addr': 'xian'}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python字典(dictionary) 的相关文章

随机推荐

  • 2020Ti电赛体会与经验

    2020Ti电赛体会与经验 写在前面 要想打好电赛 必须要提前做好充足的软硬件准备 要想打好电赛 必须做好一定的知识技能储备 要想打好电赛 必须有几个 降维打击 的高招 写在前面 2020年的Ti电赛我们选择的是E题 四天三夜的结果是可喜可
  • Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j

    Caused by org apache logging log4j LoggingException log4j slf4j impl cannot be present with log4j SpringBoot出现该错误 log4j冲
  • 如何在Word文档中粘贴漂亮的代码

    写该博客的背景 最近做毕业设计 在写论文的时候 需要粘贴一些核心的代码 但是直接从IDEA中粘过去的代码又显得十分乱 关键不美观 对于我这样一个追求完美的人 这肯定是不能达到我的满足的 经过百度之后 决定写该博客记录一下这个转变过程 步骤如
  • Android文件存储

    参考文章 https blog csdn net baidu 36385172 article details 79695308 https www jianshu com p a39bc4b3a1a6 内部存储 外部存储 Android系
  • stable diffusion webui中的sampler

    Stable Diffusion 采样器篇 知乎采样器 Stable Diffusion的webUI中 提供了大量的采样器供我们选择 例如Eular a Heum DDIM等 不同的采样器之间究竟有什么区别 在操作时又该如何进行选择 本文将
  • Linux基础——Framebuffer(应用层驱动lcd)

    Framebuffer 简介 Framebuffer的API函数 1 open函数 2 ioctl 函数 3 mmap 函数 编写函数操作 开发环境 韦东山Linux开发板 IMX6ULL PRO 开发板 简介 Framebuffer 是用
  • 正则表达式简要笔记

    昨天在给领导演示的时候发现需要替换文件 结果发现同事那机器上只有UltraEdit我还不太会用 淦 没找到正则替换的入口 结果不了了之 后来回来在自己电脑上试了试 发现自己想的正则也不太对 索性现在总结一下最基础 通用 重要的符号 剩下的就
  • Fiddler抓包基础使用(二)

    续上一篇文章 软件测试人员电脑需要安装的基础工具 可可爱爱的程序员的博客 CSDN博客 软件测试资料领取方式 1 Issue 可可爱爱的程序员 软件测试资料合集 GIT CODE 响应HTTP状态过滤规则 Hide success 202
  • Redis 经典面试题合集详解

    作者主页 欢迎来到我的技术博客 个人介绍 大家好 本人热衷于Java后端开发 欢迎来交流学习哦 如果文章对您有帮助 记得关注 点赞 收藏 评论 您的支持将是我创作的动力 让我们一起加油进步吧 文章目录 1 谈谈你对 Redis 的了解 2
  • Java基础——Object类和Objects工具类

    目录 1 Object类 1 1 常用方法 1 2 Object类中方法常见的问题 1 为什么重写equals时必须重写hashCode方法 2 wait和notify为什么定义在Object类当中 wait和notify或notifyAl
  • Brocade_porterrshowt(博科交换机端口状态分析)

    Brocade Switches 如何确定是SFP 或是光纤线导致 Loss of Link 丢失链接 问题 问题描述 一个有问题的SFP或光纤线会造成丢失与主机 存储或另一台交换机的连接问题 在交换机的error log中可能有如下显示
  • RPM包基本命令

    RPM包基本命令 原文链接 https www cnblogs com zqwang0929 p 3352237 htmls 例子 rpm ivh example rpm 安装 example rpm 包并在安装过程中显示正在安装的文件信息
  • python二级菜单_python二级登陆菜单

    1 三级菜单 注册 登陆 注销 2 进入每一个一级菜单 都会有下一级的菜单 user item dict try while True print Welcome sir input choice int input Please ente
  • 利用cordova打包apk

    声明 电脑未安装过android studio 不会使用android studio 在此基础上将vue cli3项目打包成apk 百度了一下如何将vue项目打包成apk 百度说用HBuilderX 10秒就可以完成 然后我就按照百度的方法
  • Bert CNN信息抽取

    Github参考代码 https github com Wangpeiyi9979 IE Bert CNN 数据集来源于百度2019语言与智能技术竞赛 在上述链接中提供下载方式 感谢作者提供的代码 1 信息抽取任务 给定schema约束集合
  • webpack 热更新原理解析

    一 什么是 HMR HMR 全称 Hot Module Replacement 中文语境通常翻译为模块热更新 它能够在保持页面状态的情况下动态替换资源模块 提供丝滑顺畅的 Web 页面开发体验 1 1 HMR 之前 在 HMR 之前 应用的
  • JavaScript HTML DOM - 改变CSS

    要使用JavaScript改变HTML元素的CSS样式 可以通过访问元素的style属性来实现 下面是一些常见的方法 1 直接设置样式属性 javascript var element document getElementById myE
  • VISIO,不规则封闭图形填充方法

    VISIO 不规则封闭图形填充方法 2013 01 17 11 42 08 分类 Windows平台 VISIO 不规则封闭图形颜色填充方法 使用VISIO 2010 时 对规则的封闭图形填充非常简单 但是要想画一个不规则的图形 并且填充颜
  • Whois原理

    RFC812 定义了一个非常简单的Internet信息查询协议 WHOIS协议 其基本内容是 先向服务器的TCP端口43建立一个连接 发送查询关 键字并加上回车换行 然后接收服务器的查询结果 世界上各级Internet管理机构秉承公开 公正
  • python字典(dictionary)

    字典 字典组成 字典由键 key 和值 value 组成 字典元素由 括在一起 dic key1 value1 key2 value2 key是字典中的键 value是该键对应的值 key value称之为键值对 字典的创建 直接按照定义创