1、为何要有字典?

一个key对应一个value,我只要知道key就能取出value。

2、字典的形式

dic = {‘name’:’dajiba’,’age’:18}

key的定义规则:

不可变

value的定义规则:

任意类型

3、字典的增删改查

增加:

dic = {'name':'dajiba','age':18}
dic['sex']='man'
print(dic)
打印结果:
{'sex': 'man', 'age': 18, 'name': 'dajiaba'}

删除:

有一个万能的删除法

dic={'name':'dajiaba','age':18}del dic['name']
print(dic)
打印结果删除了name{'age': 18}

dic={'name':'dajiaba','age':18}
dic['name']='jixuege'
print(dic)
打印结果{'age': 18, 'name': 'jixuege'}

dic={'name':'dajiaba','age':18}
#查询,如果没有回报错
print(dic['name'])
#查询,如果没有不会报错
print(dic.get('name'))
打印结果:dajiaba
dajiaba

要求:

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序

永远的痛,下面就附上几个实现的方法:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Author: Leon xie

menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'包子':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}

new_menu=menu
menu_level=[]
while True:
for key in new_menu:
print(key)

choice = input("请输入你的选择>>")
if len(choice) == 0:continue

if choice == "b":
if len(menu_level) ==0:break
new_menu=menu_level[-1]
menu_level.pop()
if choice not in new_menu:continue
menu_level.append(new_menu)
new_menu=new_menu[choice]

集合

一、为何要有集合?

1、举个栗子

在没有集合的时候,我们表是一组名字是用列表。如下

Python_list=['dajiba','lhf','pangfeng']

linux_list=['xiaoming','laowang','alex','lhf']
both=[]
那么我要取2个列表相同的东西,就需要使用下面的for循环
for name in linux_list:    if name in Python_list:        both.append(name)

print(name)
打印结果
lhf
会不会很麻烦?
 
2、使用集合来解决上面的痛点
创建一个数字集合
s = set([3,5,9,10])  它的输出结果就是 s ={9, 10, 3, 5}是一样的。
t = set("Hello")    它的输出结果就是   t = {'e', 'H', 'l', 'o'}
集合是一个无序的,不重复的数据组合,它的主要作用如下:
* 去重,把一个列表变成集合,就自动去重了,如上所示
* 关系测试,测试两组数据之间的交集、差集、并集等关系。
 
常用操作:
a= t | s     # 表示t 和 s的并集
b= t & s     # 表示 t 和 s的交集
c= t - s    # 差集(在t不在s中)
d = t ^ s    #对称差集(项在t或s中,但不会同时出现在这二者中)
 
基本操作如下:
 
 

# 添加一项
t = set("Hello")

t.add('x')
print(t)
打印结果如下:
{'e', 'o', 'l', 'H', 'x'}

#在s中添加多项
s = set([3,5,9,10])
t = set("Hello")

s.update([10,12,13,13])
print(s)
打印结果如下:
{3, 5, 9, 10, 12, 13}

使用remove()可以删除一项:
t = set("Hello")
t.remove('H')
print(t)
打印结果如下:
{'o', 'l', 'e'}

长度
s = set([3,5,9,10])
print(len(s))
打印结果如下:

测试x是否是s的成员
x in s

测试x 是否不是s的成员
x not in s

测试是否s中的每一个元素都在t中
print(s.issubset(t))或
s <= t
打印结果
False

测试是否t中的每一个元素都在s中
s.issuperset(t)或者s>=t

并集
print(s|t)
打印结果
{'l', 3, 5, 'e', 'o', 9, 10}
或者是
s.union(t)

交集
print(s.intersection(t))
或者
s & t

s中有但是t中没有的元素
s.difference(t)
或者
s - t

转载于:https://www.cnblogs.com/Jo-king/p/6010218.html

Python基础 day3相关推荐

  1. python 基础 day3

    python 操作文件的常用方式有如下 读文件:r 模式 实例演示1: f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_tab ...

  2. Python基础day03【字符串(定义、输入输出、常用方法)、列表(定义、基本使用、增删改查、嵌套)、元组】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day3 作业解析[5道 字符串题.3道 列表题.2道 元组题]      学习目 ...

  3. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  4. python基础(一)完结

    Day 01 python基础 一.计算机基础 1.快捷键: 快速复制:Ctrl+D 垂直拆分 水平 拆分 快速修改 查看 2.计算机的组成 硬件:运算器 控制器 存储器 输入设备 输出设备 软件: ...

  5. f是一个python内部变量类型,Python基础变量类型——List浅析

    Python使用list 一.list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示 ...

  6. python 等号报错_Python学习----Python基础

    Python基础 一.数据类型和变量 1.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量. 例如: a =520# a是整数prin ...

  7. python基础——继承与派生、组合

    python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...

  8. Python学习笔记1 Python基础

    第1章 Python基础 1.1 Python概述及版本介绍 1.Python是一种面向对象的解释型计算机程序设计语言(解释型语言源代码->解释器逐行解释每一句源代码) 2.优点:高级语言.可移 ...

  9. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

最新文章

  1. 将在2021年改变商业格局的10项技术
  2. window7自带的分区
  3. 区块链架构、跨链和演进
  4. 54 Django 模型层(1) 单表查询
  5. 在ADF实体PK属性中使用MySQL自动增量PK列
  6. linux6.5安装oracle,linux [CentOS 6.5]下安装oracle
  7. NAS、SAN和DAS的区别
  8. mysql for mac
  9. HoloLens 2开发:使用Gaze开发,视线小球不停向眼端移动
  10. easyUI 设置datagrid的行高 + 文字超宽换行
  11. openwrt编译基本教程
  12. 数据结构与算法经典图书推荐
  13. 网页版俄罗斯方块第1版
  14. HTML5超炫3D雷达扫描地图玩法
  15. 前端知识之angular组件库之NG-ZORRO-ANTD结构窥探(一)components
  16. 802.11标准及无线网运行模式
  17. OTA制作及升级过程
  18. appinventor java,(1) AppInventor高级组件之JavaReflector系列教程 概述
  19. Ubuntu/linux c开发(4)线程池
  20. 【三维目标检测】Part-A2(一)

热门文章

  1. 2010计算机上机考试试题,WORD2010上机操作练习题
  2. REAL-TIME RENDER 4th Chapter 23 Graphics Hardware
  3. 华为双屏手机计算机,华为双屏手机设计惊艳亮相 背面的屏幕是干嘛用的?
  4. 混凝土弹塑性损伤本构模型在Abaqus中vumat子程序的实现
  5. ubuntu权限不够(进入后身份并不是root而是自己的默认登录名的情况)
  6. MyBatis-Plus分页查询(快速上手运用)
  7. 当Scanner.nextInt()遇到了Scanner.nextLine()
  8. 华为电脑wrtw29安装Linux,华为MateBook13WRT-W29对比苹果 MacBook Air
  9. wordpress仅用代码轻松实现网站蜘蛛爬行记录
  10. 台达,AS228T,plc程序模板和触摸屏程序模板,目前6个总线伺服,采用CANOPEN,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制