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数据类型详解——字典的更多相关文章

  1. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  2. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  3. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  4. Python数据类型详解——列表

    Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...

  5. Python数据类型详解——元组

    Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...

  6. 1.python数据类型详解

    python数据类型分类 1).数值型:整数型(int).浮点型(float).布尔型(bool 取值:True.False) 2).容器类型 : 字符串型(str).列表(list).元祖(tupl ...

  7. python数据类型详解及列表字典集合推导式详解

    一.运算符 Python语言支持以下类型的运算符: 算术运算符 如: #!/usr/bin/env python # -*- coding:utf-8 -*- a = 5 b = 6 print(a ...

  8. python数据类型详解

    目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字符串,例如:str='th ...

  9. python 数据类型详解(转)

    转自:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1. ...

随机推荐

  1. web设计_2_灵活的文字

    最佳设计:可以让用户自由控制任何页面的文字大小. 浏览器中用户都是可以自定义默认的文字大小的,如果使用 px,用户自行在浏览器设置中改变了文字大小后,网页上是不会变化的.我们不能排除视障用户(如近视) ...

  2. 这 3 个 Set 集合的实现有点简单,那来做个总结吧

    Set 接口是 Java Collections Framework 中的一员,它的特点是:不能包含重复的元素,允许且最多只有一个 null 元素.Java 中有三个常用的 Set 实现类: Hash ...

  3. Python实现淘宝秒杀聚划算自动提醒源码

    快来加入群[python爬虫交流群](群号570070796),发现精彩内容. 本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义 ...

  4. win10去除快捷方式小箭头

    切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...

  5. java在src/test/resourse下读取properties文件

    package com.jiepu; import java.io.File; import java.net.URISyntaxException; import java.util.Map; im ...

  6. CMD开放3389端口

    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t R ...

  7. 手动编译PHP开发环境

    目录 手动编译PHP开发环境 问题复盘 部署环境及配置 目标环境 安装部署环境开始 首先安装PHP 安装mysql 安装nginx 手动编译PHP开发环境 这是一篇来自深夜加班的手稿 问题复盘 你有没 ...

  8. Spring的数据库编程浅入浅出——不吹牛逼不装逼

    Spring的数据库编程浅入浅出——不吹牛逼不装逼 前言 上文书我写了Spring的核心部分控制反转和依赖注入,后来又衔接了注解,在这后面本来是应该写Spring AOP的,但我觉得对于初学者来说,这 ...

  9. 前端登录jq图形验证码

    <!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8" ...

  10. C++这么难,为什么还要学习C++呢?如何学?

    在大多数开发或者准开发人员的认识中,C/C++ 是一门非常难的编程语言,很多人知道它的强大,但因为认为“难”造成的恐惧让很多人放弃. 这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质 大 ...