Skip to content

Latest commit

 

History

History
185 lines (124 loc) · 4.46 KB

169-233927-for_遍历字典_dict.sy.md

File metadata and controls

185 lines (124 loc) · 4.46 KB
show version enable_checker
step
1.0
true

字符串和字节序列

回忆

  • 这次用 for 遍历了
    • 字符串
    • 字节序列
  • 他们都是可迭代的对象
  • 回忆了两种打断的方式
    • break 彻底打断
    • continue 中断本轮,后面继续
  • 容器里面还有个字典
  • 字典是可迭代 iterable 的对象么?🤔

字典

  • 回忆

图片描述

  • 那字典相关的这些东西都是什么类型的呢?
  • help(dict)
  • 去找一下

字典

图片描述

  • items、keys 都是像集合一样的对象

图片描述

  • values 也一样,是提供一种视图
  • 说到底怎么遍历字典呢?

遍历

图片描述

  • 看起来遍历字典
  • 就是在遍历他的 keys
  • 通过 key 也就能得到相应的 value
  • 毕竟字典的本质是 key-value 对的集合

遍历整个字典

图片描述

  • 注意d[key]
    • 用的是中括号
    • 中括号意味着对于字典d取索引
    • 就和对列表取数字索引一样
      • l[0] = "o"
      • 索引结果是列表项的值
    • 索引可以根据字典的key来取索引
      • d["a"] = 1
      • d["b"] = 2
      • 索引结果是字典项的值
  • 索引是怎么定义的呢?

索引定义

图片描述

  • 有没有更简单的遍历方法呢?
    • 还记得 items()这个函数么?
    • 好像返回值是可迭代对象

items()

图片描述

  • 这个确实可以一把确认 key-value
    • 但是格式只能输出元组
    • 不能自定制
    • 我想要自定制输出格式
    • 这个返回值是一个元组
    • 我给他两个变量可以么?

输出格式

图片描述

  • 这个字典还是比较简单的
  • 我们试试比较复杂的字典

continue

  • 如果小于 178 就忽略跳过

图片描述

  • continue
    • 结束本轮循环
    • 进入循环条件

break

  • 如果找到大于等于 183 的就跳出

图片描述

  • 直接 break 跳出三界外
  • 不在循环中
  • 那么如果字典的 value 不是一个数字
  • 而是一个元组应该怎么办呢?

图片描述

遍历

图片描述

  • 元组里面两个元素
    • 女生身高
    • 男生身高
  • 我现在要找出所有女生身高高于 169 的

图片描述

  • 现在人越来越高 😌
  • 找出所有城市中女生身高最高的

查找

图片描述

  • 遍历整个字典
  • 然后找到身高最高城市
  • 但是如果我想要找到平均身高最高的城市呢?

再查找

图片描述

  • 可以用while循环来遍历字典么?

用while遍历

图片描述

  • 这里的判断条件不对
  • is 比较的是 地址
  • d 和 {} 指向两个地址
  • d is not {} 永远为True
  • 我感觉自己永远热泪盈眶

修改

图片描述

  • 这次报错没了
  • 但是增加了开销
  • 因为每次都要新建一个空集合

再修改

图片描述

  • 这才是正确的写法

图片描述

  • 去总结吧

总结

  • 这次遍历了字典
  • 字典在 for 循环中的遍历中
    • 遍历的是字典的 keys()
  • 除了 keys()之外,还可以
    • 遍历 values()
    • 遍历 items()
  • keys()最简单明确
  • items()最全面
  • 好像形成 dict 字典的时候可以用一个 zip 函数
  • zip 函数怎么用来着?🤔
  • 下次再说 👋