当前位置: 首页 > news >正文

字典类型内置方法

目录

  • 一、字典类型内置方法(dict)
    • 1.1 优先掌握(*****)
    • 1.2 需要掌握(****)
  • 二、练习

一、字典类型内置方法(dict)

1.用途:存多个值,但每一个值都有一个key与之对应,key对值有描述功能。多用于存的值表示的是不同的状态时,例如存的值有姓名、年龄、身高、体重、爱好。

2.定义:{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,value可以是任意数据类型,而key通常应该是字符串类型,但是key必须为不可变类型。

dic = {'a': 1, 'b': 2}  # dic = dict({'a':1,'b':2})

print(f"dic: {dic}")
dic: {'a': 1, 'b': 2}
dic = dict(a=1, b=2, c=3)

print(f"dic: {dic}")
dic: {'a': 1, 'b': 2, 'c': 3}
dic = {1: 'a', 0: 'b'}

print(f"dic[0]: {dic[0]}")  # 无法区分dic是列表,还是字典,并且key不再具有描述信息
dic[0]: b
dic = {[1,2]: 'a', 0: 'b'}  # 报错

3.常用操作+内置方法:常用操作和内置方法分为优先掌握(今天必须得记住)、需要掌握(一周内记住)两个部分。

1.1 优先掌握(*****)

  1. 按key存取值:可存可取

  2. 长度len

  3. 成员运算in和not in

  4. 删除del

  5. 键keys()、值values()、键值对items()

  6. 循环

1.按key存取值:可存可取

# dic之按key存取值
dic = {'a': 1, 'b': 2}

print(f"first dic['a']: {dic['a']}")

dic['a'] = 3

print(f"second dic['a']: {dic['a']}")
first dic['a']: 1
second dic['a']: 3

2.长度len

# dic之长度len
dic = {'a': 1, 'b': 2}

print(f"len(dic): {len(dic)}")
len(dic): 2

3.成员运算in和not in

# dic之成员运算in和not in
dic = {'a': 1, 'b': 2}

print(f"'a' in dic: {'a' in dic}")
print(f"1 in dic: {1 in dic}")
'a' in dic: True
1 in dic: False

4.删除

# dic之删除del
dic = {'a': 1, 'b': 2}
del dic['a']

print(f"dic.get('a'): {dic.get('a')}")
dic.get('a'): None
# dic之删除pop()
dic = {'a': 1, 'b': 2}
dic.pop('a')  # 指定元素删除

print(f"dic.pop('b'): {dic.pop('b')}")
print(f"dic.get('a'): {dic.get('a')}")
dic.pop('b'): 2
dic.get('a'): None
# dic之删除popitem()
dic = {'a': 1, 'b': 2}

print(f"dic.popitem(): {dic.popitem()}")  # 随机删除一个元素,无法指定
dic.popitem(): ('b', 2)

5.键keys()、值values()、键值对items()

# dic之键keys()、值values()、键值对items(),python2中取出的是列表(鸡蛋);python3中取出的是元组(鸡)
dic = {'a': 1, 'b': 2}

print(f"dic.keys(): {dic.keys()}")
print(f"dic.values(): {dic.values()}")
print(f"dic.items(): {dic.items()}")
dic.keys(): dict_keys(['a', 'b'])
dic.values(): dict_values([1, 2])
dic.items(): dict_items([('a', 1), ('b', 2)])

6.循环

# dic之循环
# dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for k, v in dic.items():  # items可以换成keys()、values()
    print(k, v)
a 1
b 2
c 3
d 4

1.2 需要掌握(****)

  1. get

  2. update

  3. fromkeys

  4. setdefault

1.get()

# dic之get()
dic = {'a': 1, 'b': 2}

print(f"dic.get('a'): {dic.get('a')}")
print(f"dic.get('c'): {dic.get('c')}")
dic.get('a'): 1
dic.get('c'): None

2.update()

# dic之update()
dic1 = {'a': 1, 'b': 2}
dic2 = {'c': 3}
dic1.update(dic2)

print(f"dic1: {dic1}")
dic1: {'a': 1, 'b': 2, 'c': 3}

3.fromkeys()

# dic之fromkeys()
dic = dict.fromkeys(['name', 'age', 'sex'], None)

print(f"dic: {dic}")
dic: {'name': None, 'age': None, 'sex': None}

4.setdefault()

# dic之setdefault(),有指定key不会改变值;无指定key则改变值
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")
dic.setdefault('a'): 1
dic: {'a': 1, 'b': 2}
dic.setdefault('c'): 3
dic: {'a': 1, 'b': 2, 'c': 3}

二、练习

统计s='hello tank tank say hello sb sb'中每个单词的个数

结果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

s='hello tank tank say hello sb sb'

l=s.split()

dic={}
for item in l:
    if item in dic:
        dic[item]+=1
    else:
        dic[item]=1
print(dic)
{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

4.存一个值or多个值:多个值,值可以是多个类型,key必须是不可变类型,通常应该是不可变类型中的字符串类型

5.有序or无序:无序

dic = {'a': 1, 'b': 2}
print(f'first:{id(name)}')
dic['a'] = 3
print(f'second:{id(name)}')
first:4356627632
second:4356627632

6.可变or不可变:可变数据类型

转载于:https://www.cnblogs.com/nickchen121/p/10744137.html

相关文章:

  • Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!
  • 青柠音乐搜索下载2.0.1(PC软件)
  • postgres读写性能测试(本地、NFS)
  • UCML JS函数说明
  • 【剑指Offer】13、调整数组顺序使奇数位于偶数前面
  • 【2019计划】想要变得优秀 顺其自然是不可能的。
  • 常见跨域解决方案
  • 前端工程化
  • 【AtCoder】ARC071
  • [Markdown] 02 简单应用 第二弹
  • webmagic爬虫框架抽取元素
  • ScriptManager的几个属性和方法
  • Alpha冲刺(3/10)——2019.4.25
  • 接口测试基础
  • MySql综合知识汇总
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【css3】浏览器内核及其兼容性
  • 2017前端实习生面试总结
  • CSS 提示工具(Tooltip)
  • ECMAScript6(0):ES6简明参考手册
  • go append函数以及写入
  • HTTP中GET与POST的区别 99%的错误认识
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript设计模式之工厂模式
  • JDK9: 集成 Jshell 和 Maven 项目.
  • tab.js分享及浏览器兼容性问题汇总
  • yii2权限控制rbac之rule详细讲解
  • 初识 webpack
  • 规范化安全开发 KOA 手脚架
  • 前端面试之闭包
  • 驱动程序原理
  • 为什么要用IPython/Jupyter?
  • 项目管理碎碎念系列之一:干系人管理
  • 怎么将电脑中的声音录制成WAV格式
  • C# - 为值类型重定义相等性
  • 带你开发类似Pokemon Go的AR游戏
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #HarmonyOS:基础语法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Core 中插件式开发实现
  • .net MySql
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET/C# 使窗口永不获得焦点
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net6Api后台+uniapp导出Excel
  • .net对接阿里云CSB服务
  • .NET序列化 serializable,反序列化