python中的字典使得python来解决问题变得更方便,顾名思义,就是当我知道关键字(key)那么我就可以通过key来找到与之对应的信息。

简单的来说字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。

  1. 1 b ={
  2. 2 'name': 'miki',
  3. 3 'age': 18,
  4. 4 3: 2
  5. 5 }
  6. 6 # 如代码所示,这是一个最简单的字典。
  7. 7 # 下面的内容我们都将从b中开始展开

1.1增

有了列表的知识之后我们发现其实字典和列表的运用无非也是增删改查。

那么我们首先来看一下字典的-----增

由于前面的列表的内容已经写的很详细了 所以这里我就直接上代码了

  1. 1 # 元素增加
  2. 2 b['computer'] = 'dnf'
  3. 3 # 字典加字典
  4. 4 a = {'name': 'ssw',
  5. 5 'password': 123456
  6. 6 }
  7. 7 b.update(a)
  8. 8 # 将b传进info如果key相同则覆盖不同则增加

1.2删

  1. 1 # 删除b中的‘computer’
  2. 2 del b['computer']
  3. 3 # 指定删除
  4. 4 b.pop('computer')
  5. 5 # 随机删除
  6. 6 b.popitem()

1.3改

  1. 1 # 普通的修改只需要给定数组的key便可以修改key所对应的值
  2. 2 b['name'] = 'bookfar'

简单吗?当然只要给出索引就可以任意的修改啦

改成字典与列表都是可以的哦

1.4查

  1. 1 print(b)
  2. 2 print(b['age']) # 查看 若没有则报错
  3. 3 print(b.get('1103')) # 查看 若没有1103则显示done
  4. 4 print('name' in b) # 查看name是否在info内
  5. 5 # 如果判断成功则都将现实true,否则为false,当然有时候也会是done
  6. 6 # 打印非key的值通过这种方法我们可以查看所有的非key的值
  7. 7 b.values()
  8. 8 # 查看所有的key
  9. 9 b.keys()
  10. 10 # ()里面的值如果‘sabi’找到了则不做任何改变若没有则怎加一个
  11. 11
  12. 12
  13. 13 b.setdefault('sabi',{'lalala':['digital','wudi']})
  14. 14 # 这里应该是属于增加的一部分 党委找到时这种方法是不会报错的所以每一个方法都要注意使用

1.5实际上字典里面甚至可以存入字典与列表的我们可以一起来看一下

  1. 1 b = {
  2. 2 'name': 'miki',
  3. 3 'age': 18,
  4. 4 'wocao':{'password': 123456},
  5. 5 'information': ['sex', 'email'],
  6. 6 3: 2
  7. 7 }
  8. 8 # 如上我们在字典里面加上了字典与列表
  9. 9 # 那么当我们现在想访问‘wocao’里面的password我们改如何做呢?
  10. 10 print(b['wocao']['password'])
  11. 11 # 那么此时为的输出结果就是123456
  12. 12 # 倘如password还是一个字典呢?
  13. 13 # 那么我们访问的方法是不是也是一样呢
  14. 14 # 举个例子来说我们一个地球是不是有许多国家呢,国家下面又对应着省,省下面又有市
  15. 15 # 所以我们就可以使用字典实现多级菜单啦。
  16. 16 # 下面字典里面嵌套列表的用法你们自己来试一下吧。也是一样的哟

这里我们就可以布置易个三级菜单的作业啦

要求就是做一个由省市县的三级菜单 当我进入省时打印所有该省的市,再次进入市时,打印所以改县下的东西

例子:

  1. 1 # _*_coding:utf-8_*_
  2. 2 # /usr/bin/env python3
  3. 3 # Author:book Miki
  4. 4
  5. 5 data = {
  6. 6 '江西':{'南昌':{"南昌县":['南昌拌粉','瓦罐汤'],
  7. 7 '东湖区':['瑶湖','南昌之心']},
  8. 8 '九江':{'德安县':['德安一中','德安二中'],
  9. 9 '星子县':['星子一中','星子二中']},
  10. 10 '新余':{'分宜':['分宜县','新余下一站'],
  11. 11 '渝水区':['江西工程学院','新余学院']}},
  12. 12 "福建":{
  13. 13 "莆田":{'耐克':['莆田鞋','还是牛逼'],
  14. 14 '阿迪达斯':['莆田','的','阿迪达斯']},
  15. 15 '厦门':{'思明区':['厦门','的','思明区'],
  16. 16 '厦门的不知道':['我','只','知道','鼓浪屿']}
  17. 17 },
  18. 18 }
  19. 19 while True:
  20. 20 for i in data:
  21. 21 print(i)
  22. 22 choss = input('用户选择:')
  23. 23 if(choss in data):
  24. 24 while True:
  25. 25 for i in data[choss]:
  26. 26 print(i)
  27. 27 choss2 = input('用户选择:')
  28. 28 if (choss2 in data[choss]):
  29. 29 while True:
  30. 30 for i2 in data[choss][choss2]:
  31. 31 print(i2)
  32. 32 choic = input('选择:')
  33. 33 if(choic in data[choss][choss2]):
  34. 34 print(data[choss][choss2][choic])

python之路 《四》 字典的更多相关文章

  1. python之路四

    内建函数 内建函数详解: 1. abs(x) abs()函数返回数字(可为普通型.长整型或浮点型)的绝对值.如果给出复数,返回值就是该复数的模.例如: >>>print abs(-2 ...

  2. Python学习笔记四--字典与集合

    字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={ ...

  3. python之路---05 字典 集合

    二十.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新v ...

  4. Python之路 day2 字典练习题之 三级菜单

    #Author:ersa ''' 程序: 三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 ''' menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{ ...

  5. python之路(四)-set集合

    set集合 set是一个无序且不重复的元素集合优点:访问速度快,解决重复问题 l1 = [1,2,34,5,6,7,4,3,3,] s2 = set(l1) #可以以列表元祖等作为参数传进来,set集 ...

  6. Python之路系列笔记

    备注:本套笔记内容来源于互联网,只做学习使用,如有侵权请联系本笔记作者. 资料内容 Python之路(一)——Python 初识 Python之路(二)——基础语法 Python之路(三)——函数 P ...

  7. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  8. Python之路【第十四篇】:AngularJS --暂无内容-待更新

    Python之路[第十四篇]:AngularJS --暂无内容-待更新

  9. python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点

    python 闯关之路四(下)(并发编程与数据库编程)   并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型   操作系统工作原理介绍.线程.进程演化史.特点.区别 ...

  10. Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)

    一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...

随机推荐

  1. 测试-python相关

    python基础 一行代码实现1~100累加,不使用for循环 方式一: sum(range(1,101)) 方式二: 1 from functools import reduce 2 reduce( ...

  2. 扫描仪扫描文件处理-A4分辨率

    转换公式:毫米转英寸,英寸乘以DPI(每英寸点数) 1英寸 = 2.54 厘米 = 25.4 毫米 例子(600dpi):mm: 210x297 = px: 4961(210/25.4*600)x70 ...

  3. composer 阿里云镜像配置

    https://developer.aliyun.com/composer 全局配置(推荐) 所有项目都会使用该镜像地址: composer config -g repo.packagist comp ...

  4. sync.WaitGroup的使用以及坑

    all goroutines are asleep - deadlock 简单使用: package main import ( "sync" ) type httpPkg str ...

  5. FDDB人脸检测数据集 生成ROC曲线

    看了好多博客,踩了很多坑,终于把FDDB数据集的ROC曲线绘制出来了.记录一下. 环境:ubuntu18.04 1.数据集准备 去FDDB官网:http://vis-www.cs.umass.edu/ ...

  6. PCB layout注意事项

    1.信号线一般12mil以上,选15或20左右及以上 via内外径选2倍关系的,如内径10mi外径20mil,但不是绝对,内10外15.18也可. 2.mil与mm单位转换,即100mil=2.54m ...

  7. react-native 常见问题

    1.webpack使用babel-loader后编译报错 报错ERROR in ./entry.js Module build failed: SyntaxError: /Users/yixin/De ...

  8. jq animate 的第二写法

    俩个参数的写法 例子: $('#div1').animate({num:'auto'},{ duration : 1000,   //运动时间 easing : 'linear',    //运动形式 ...

  9. Java数据结构-03单链表(二)

    在之前我们封装了一些操作在接口类中,并在抽象类实现了相同的方法.下面我们开始写代码: 无头结点单链表:(注意下面的AbstractList是之前抽取的类,不是java.util包下的类) public ...

  10. 对于类似经销商的实体中Place(CBM_PALCE_ID = NULL)的情况,如何获取省市信息(限foton)

    在库里像上述描述的数据很多,这种情况需要拿fence里的经纬度,反查省市 String[] strArr = data.getFence().getValue().split(";" ...