之前一直使用dir(dict)的时候一直把前后有双“_”的方法也一起放在里面,既然现在也不讲,太多也看着挺烦。

昨天看书的时候顺便看到这个Pythonic的写法--使用列表推导式。这样带“_”也就没有了,剩下的字典操作方法,我尽力说明清楚。

[d for d in dir(west_team_msg) if not d.startswith('_')]

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

至于什么是列表推导式,后面小结的时候会结合list、tuple、dict的特性加以说明。其实是个很简单的东西,也非常好用,在很多场合可以避免使用遍历+append的操作。

言归正传,自从悟空被大大王吃到肚子里后,就没了消息。三藏便让八戒去打听。八戒哪有悟空机灵,居然在妖怪洞穴门口就开始喊了:我大师兄呢?

里面小妖一看:怎么来个猪头猪脑的,是西天取经队伍的?于是拿出字典开始搜索。

for key,value in west_team_msg.items(): if value["外表"] == "猪": print(key)

这个地方涉及到字典的一个items()方法,作用我们大致看一下 [in]:west_team_msg.items() [out]:dict_items([('三藏', {'外表': '人', '职业': '和尚', '兵器': '无', '事迹': '西天取经', '故地': '东土大唐'}), ('悟空', {'外表': '猴子', '职业': '和尚', '兵器': '金箍棒', '事迹': '大闹天宫', '故地': '花果山', '技能': '七十二变'}), ('八戒', {'外表': '猪', '职业': '和尚', '兵器': '九齿钉耙', '事迹': '调戏嫦娥姐姐', '故地': '高老庄'}), ('悟净', {'外表': '沙妖', '职业': '和尚', '兵器': '降妖宝杖', '事迹': '打碎琉璃盏', '故地': '流沙河'}), ('小白龙', {'外表': '马/人/龙', '职业': '和尚/官二代', '兵器': '大宝剑', '事迹': '火烧明珠', '故地': '西海龙宫'})])

输出有点长,我们稍微格式化一下,看的清楚些 dict_items( [('三藏', {'外表': '人', '职业': '和尚', '兵器': '无', '事迹': '西天取经', '故地': '东土大唐'}), ('悟空', {'外表': '猴子', '职业': '和尚', '兵器': '金箍棒', '事迹': '大闹天宫', '故地': '花果山', '技能': '七十二变'}), ('八戒', {'外表': '猪', '职业': '和尚', '兵器': '九齿钉耙', '事迹': '调戏嫦娥姐姐', '故地': '高老庄'}), ('悟净', {'外表': '沙妖', '职业': '和尚', '兵器': '降妖宝杖', '事迹': '打碎琉璃盏', '故地': '流沙河'}), ('小白龙', {'外表': '马/人/龙', '职业': '和尚/官二代', '兵器': '大宝剑', '事迹': '火烧明珠', '故地': '西海龙宫'}) ])

简化下得到 [('三藏',{}) ('悟空',{}) ('八戒',{}) ......] "三藏","悟空"这些其实是west_team_msg的键(key), 后面的{}就是west_team_msg的键对应的值(value) 也就是说,items()的作用,就是把字典里面所有的键值对单独拿出来编成(key,value)这样的元组形式 那keys,values的作用也很好理解了:就是单独把键或者值拿出来

for key,value in west_team_msg.items(): if value["外表"] == "猪": print(key)

OUTPUT:八戒

这里用for就会遍历items()得到的键值对元组, 如果里面有一个值对应"外表"是"猪",就打印出来,那我们看到得到的结果是"八戒"

写的程序都比较简单,仅仅作为入门演示,实际工作中要尽可能逻辑性强化一点。

这些小妖一看是三藏的徒弟八戒,于是一起大喊道,你大师兄被我们大王吃的,现在估计连骨头渣子都不剩了。

八戒一听大师兄没了,垂头丧气的就回去了。回到村子后,有听悟净说师傅也被不知道哪来的妖风给卷走了。

悟净很着急,八戒却动了歪脑筋:沙师弟,你看师傅和大师兄都没了,不如我们把行李分了,你回你的流沙河,我回我的高老庄。说着就动起了手。

things = {} things["八戒"] = [] things["悟净"] = []

things["悟净"].append("师傅的袈裟") things["八戒"].append("化缘的金钵")

悟净一把抢了过来,把八戒分东西的字典给清除了。

things.pop("八戒") #pop()根据传入的键删除键值对 things.popitem() #popitem()直接把字典里面的一组键值对删除

当然,用clear()是最快的,直接一次性删除字典里面的所有键值对,不过这里悟净是一样一样把东西收回来了,所以分次删除就行。

八戒生气的坐在一边:反正没了师傅,西天也不用去了,分了算了。

悟净劝八戒到:大师兄本领高强,我不相信会被妖怪吃了。于是强拉着八戒一起去找悟空去。

预知后事如何,请听下回因式分解。完结篇将会把剩下的一些操作方法讲完。

创作不易,请大家多多关注、点赞、在看三连支持,谢谢~~

Python入门:数据结构之字典(dict)(2)相关推荐

  1. python入门(12)dict

    python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...

  2. Python for循环遍历字典(dict)的方法

    本文主要Python中,Python2.x和Python3.x分别使用for循环遍历字典(dict)的方法,以及相关的示例代码. 原文地址:Python for循环遍历字典(dict)的方法

  3. python数据结构之字典(dict)——超详细

    字典(dict) 1.什么是字典 字典是具有映射关系的一个集合,有自己的标志性符号,用{}来定义.字典由多个键以及其对应的键值共同构成的,字典是无序的,只讲究对应关系,并且字典中的键是独一无二的 1. ...

  4. Python入门4_之字典的使用

    说到python的字典,我第一个想到的是与之类似的JSON,也同样是键值对. 前面第一讲有那么一个隐患的问题,我们说八进制数都是以0开头的,但是有的时候,我们要表示以0开头的十进制数,怎么办?最常见的 ...

  5. 十二章 Python入门系列之字典

    系列文章目录 第一章 Python入门系列之介绍 第二章 Python入门系列之PyCharm 第三章 Python入门系列之注释 第四章 Python入门系列之变量 第五章 Python入门系列之输 ...

  6. python set集合_Python字典(dict)和集合(set)

    想必大家都有查字典的经历吧,让我们再回顾一下查字典的步骤:根据拼音或者边旁找到这个字,然后翻到这个字对应的页数,就能看到这个字的详细解释啦. Python字典(dict)其实也是差不多的概念,在字典( ...

  7. Python入门--列表,字典,元组,集合总结

    #列表,字典,元组,集合总结 #数据结构--------------->是否可变---------------------->是否重复------>是否有序---->定义符号 ...

  8. [转载] python string 字符串转换为字典 dict

    参考链接: Python | 将列表字符串转换为字典 dict = eval(string)

  9. 【Python 实战基础】字典 dict 和 json 如何相互转化

    目录 一.实战场景 二.主要知识点 三.菜鸟实战 1.创建 python 文件 2.文件目录 3.运行结果 一.实战场景 字典 dict 和 json 如何相互转化, 将字典数据转 json 格式写入 ...

  10. Python:六、字典dict,元组tuple与集合set的使用

    一.字典dict[重要] 1.1 字典概念 语法: {键1: 值1, 键2: 值2, 键3: 值3, -, 键n: 值n} 说明:键值对: key-value 字典和列表类似,都可以用来存储多个数据 ...

最新文章

  1. 芒果TV 2021 互联网人才招聘
  2. Openstack Paste.ini 文件详解
  3. 将redis作为windows服务安装
  4. Could not find a version that satisfies the requirement PIL
  5. 数学之美 系列 12 - 余弦定理和新闻的分类
  6. MTK:UART串口收发数据
  7. 分享2011年10月网上随机搜集的超酷超有趣的web开发和Javascript代码
  8. python分布式任务调度_Python开源任务调度框架介绍
  9. 树莓派摄像头模块(Pi Cam)的安装使用
  10. 硅芯片拆解:早期 555 定时器芯片内部一览
  11. python tkinter 窗口最大化
  12. 多线程测速软件带宽叠加设置
  13. 用Visio画UML顺序图
  14. IT 界惊现文豪!华为领导及阿里 P10 遭吐槽!
  15. Android拦截黑名单(简易版)
  16. QChart数据可视化应用
  17. iOS自动构建以及打包命令(xcodebuild,xcrun)
  18. c语言压力变送器程序设计,基于单片机的压力变送器设计
  19. 英语不好,能学好计算机吗?
  20. 申请域名绑定IP开通80端口记录

热门文章

  1. 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
  2. Linux自动启动ssh方法
  3. 【Excel】取消合并单元格后快速填充
  4. Spring的bean是怎么保证线程安全的
  5. php获取m3u8的地址,如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例...
  6. 关于段地址和偏移地址的理解
  7. c语言 long int最大数,long整型的最大值跟处理器位数有关
  8. 医学超声成像—合成孔径法(Synthetic Aperture Methods)[3]
  9. java绘图-常用条形码类型组成及使用说明
  10. 搭建kettle 源码工程报[ui/spoon.xul]找不到错误的解决方案