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. Soso(嗖嗖)移动 java 项目

    1.接口 通话服务 package Soso; // 接口 通话服务 public interface CallService { public abstract int call(int minCo ...

  2. 关于java飞机躲炮弹的一些对象说明(带源码)

    1.飞机躲炮弹的各种实体类都需要一个画笔将他们画出来 (GameObject) import java.awt.*; public void drawSelf(Graphics g){ g.drawI ...

  3. 【转载】【VSCode】Windows下VSCode编译调试c/c++

    转载自:http://blog.csdn.net/c_duoduo/article/details/51615381 懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Window ...

  4. IDEA自学

    使用Eclipse很长时间了,想换个IDE用,都说IDEA好用,今天试试 百度了一下IDEA,了解到IDEA社区版免费,上百度,下载个社区版(exe,zip两种)懒人选择exe 手动安装别怕安错,只管 ...

  5. Where is the clone one and how to extract it?

    One cannot be in two places at once. Do you know what's "Dual Apps"? Manufactures like Xia ...

  6. 牛客多校训练第八场G.Gemstones(栈模拟)

    题目传送门 题意: 输入一段字符串,字符串中连续的三个相同的字符可以消去,消去后剩下的左右两段字符串拼接,求最多可消去次数. 输入:ATCCCTTG   输出:2 ATCCCTTG(消去CCC)——& ...

  7. JS DOM(文档对象模型)与BOM(浏览器对象模型)

    在JS中,对DOM(Document Object Model)对象和BOM(Browser Object Model )对象的操作是非常重要的内容.DOM主要包括HTML文档的属性和方法,像对HTM ...

  8. CSS实现三栏布局(5种)

    常见的布局方式: float布局.Position定位.table布局.弹性(flex)布局.网格(grid)布局 那么我们就是用以上5种方式完成三栏布局,不过前提是左右宽度(假如左右宽度为300px ...

  9. LD_PRELOAD和ld --wrap

    前言 LD_PRELOAD和ld --wrap都能实现不修改原始代码,替换指定函数的实现.通常我们会使用这些方法,替换如malloc)()/free().read()/write()等函数,并在替换函 ...

  10. 白话--长短期记忆(LSTM)的几个步骤,附代码!

    1. 什么是LSTM 在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义.我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考.我们的思想拥有持久性.LSTM就 ...