Python数据类型详解——字典
Python数据类型详解——字典
引子
已经学习了列表,现在有个需求——把公司每个员工的姓名、年龄、职务、工资存到列表里,你怎么存?
staff_list = [
["Kwan",21,"CEO",1000000],
["小明",22,"人力",5000],
["LL",21,"财务",7000],
# [xxx,xx,xx,xxx]
# [xxx,xx,xx,xxx]
# [xxx,xx,xx,xxx]
]
以上面的形式存,没问题。不过你要查某一个人的工资的话,就得遍历这个列表了。
for i in staff_list:
if i[0] == '小明': # 查询小明的信息
print(i)
break
但假如公司有20000人,如果你要查询的这个人正好在列表的最后一个,那就意味着这个for循环得20000人全部走一遍,才能找到。列表越大,查找速度就会越慢。
此时,就需要用到Python语言中唯一得映射类型——字典(dict)。
一、定义
定义语法:{key1:value1, key2:value2}
(以键值对得形式定义,用{}
括起来)
1、键(key)与值(value)之间用冒号:
隔开。
2、键值对与键值对之间用,
隔开。
示例:
info = {
'name':'Kwan',
'age':'21',
'blog_site':'https://cnblogs.com/Kwan-C/'
}
特性:
- key-value(键值对)结构
- key必须为不可变数据类型、必须唯一
- 可存放任意多个value、可修改、可以不唯一
- 字典是无序的
- 查询速度块,且不受字典大小的影响(至于为什么块?学到hash时就懂了)
二、创建方法
# 第一种(最常用)
info = {'name':'Kwan', 'age':21}
# 第二种
info = dict(name='Kwan', age=21)
# 第三种
info = dict({'name':'Kwan', 'age':21})
# 第四种
s = {}.fromkeys(['name', 'age'],1) # 这种定义的结果为{'name': 1, 'age': 1}
三、增加操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
# 新增LL 直接添加
info['LL'] = [21, '财务', 7000]
# 或者使用setdefault
info.setdefault('LL', [21, '财务', 7000])
四、删除操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
info.pop('Kwan') # 用pop()方法,删除指定的key
info.popitem() # 用popitem()方法,随机删除一个key
del info['小明'] # 用del,删除指定的key
info.clear() # 用clear()方法,清空该字典
五、修改操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
info['Kwan'][1] = 'boss' # 直接找到指定元素重新赋值即可
info['KK'] = '新来的' # 'KK'这个键(key)不存在于info中,此时就是添加操作了
info2 = {
'PP':[24, '销售', 6000],
'UU':[23, '宣传', 5000],
}
info.update(info2) # 将字典info2的键值对添加到字典info中
六、查操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
a = info['Kwan'] # 返回字典中key为'Kwan'对应的值,若key不存在,则报错
b = info.get('小明', default = None) # 返回地点中key为'小明'对应的值,若key不存在,则返回default的值(default默认值为None)
if 'Kwan' in info: # 用in方法,判断key是否在字典中,存在则返回True,否则为False
print(info['Kwan'])
c = info.keys() # 返回一个包含字典所有key的列表
d = info.values() # 返回一个包含字典所有value的列表
e = info.items() # 返回一个包含所有(key, value)元组的列表
七、循环
info = {
"name":"Kwan",
"ahe":21,
"website": "https://cnblogs.com/Kwan-C/"
}
# 第一种
for k in info.keys(): # 遍历字典所有的key
print(k, info[k])
# 第二种
for k, v in info.items(): # 遍历字典所有的键值对
print(k, v)
# 第三种
for k in info: # 同第一种
print(k, info[k])
八、求取字典的长度
info = {
"name":"Kwan",
"ahe":21,
"website": "https://cnblogs.com/Kwan-C/"
}
print(len(info)) # 结果为字典中key的数量,info中key的数量为3
Python数据类型详解——字典的更多相关文章
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
- Python数据类型详解——列表
Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...
- Python数据类型详解——元组
Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...
- 1.python数据类型详解
python数据类型分类 1).数值型:整数型(int).浮点型(float).布尔型(bool 取值:True.False) 2).容器类型 : 字符串型(str).列表(list).元祖(tupl ...
- python数据类型详解及列表字典集合推导式详解
一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a ...
- python数据类型详解
目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字符串,例如:str='th ...
- python 数据类型详解(转)
转自:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1. ...
随机推荐
- android 界面提示框架WisdomProgressHUD,为金典而生
一:简述 今天给android开发者们,推荐一个金典的界面提示框架WisdomProgressHUD,使用简洁方便. WisdomProgressHUD 是一个半透明的 HUD 指示器. Wisdom ...
- WPF 动态添加按钮以及样式字典的引用(Style introduction)
我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的对象就可以了. 下面是Ui,其中定义了一个WrapPanel来存放CheckBox,还 ...
- GDB 基本用法
1.编译文件时需要加上 -g 选项,并非是将源码嵌入可执行文件,只是加入源代码的信息.eg:gcc -g main.c -o main 2.直接按回车键会重复上一条命令 3.基本指令 help,可以查 ...
- 【Java】点击 JButton 修改 Jlabel 的文字和字体颜色
要求: 点击 JButton 后执行一个方法 m(比较耗时),点击时改变 JLabel 的字体和颜色,方法 m 运行结束后再次修改 JLabel 的字体和颜色. 刚开始点击,都是方法 m 运行结束后, ...
- 最火的分布式 HTAP 数据库 TiDB - 入门实践教程
偶然在某篇博客看到了 TiDB,一个融合 OLTP 和 OLAP 的分布式开源数据库, GitHub 上 Star 很多,然后 watch 了,发现 commit 和 pull request 一直都 ...
- 从CNI到OVN
kubernetes各版本离线安装包 诸如calico flannel等CNI实现,通过牺牲一些功能让网络复杂度得以大幅度降低是我极其推崇的,在云原生时代应用不再关心基础设施的场景下是一个明智之举,给 ...
- str_replace导致的注入问题汇总
研究了下replace的注入安全问题. 一般sql注入的过滤方式就是引用addslashes函数进行过滤. 他会把注入的单引号转换成\',把双引号转换成\",反斜杠会转换成\\等 写一段ph ...
- 渐进式web应用开发---Service Worker 与页面通信(七)
_ 阅读目录 一:页面窗口向 service worker 通信 二:service worker 向所有打开的窗口页面通信 三:service worker 向特定的窗口通信 四:学习 Messag ...
- Hibernate的执行流程
Hibernate框架的工作流程 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的&l ...
- 如何在GitHub上删除自己的项目?
话不多说,直奔主题~ 1.打开GitHub,在主页左边有自己写的库. 2.拿删除第二个库wlh-hub/vue-zsgc为例,点击它,进入下面页面. 3.在导航栏一栏中,找到settings,并点击. ...