一个初学者的辛酸路程-Python基础-3
前言
不要整天沉迷于学习….
字典
一、我想跟你聊聊字典
1、为何要有字典?
大家有没有想过为什么要有字典?有列表不就可以了吗?
也许大家会这么认为,我给大家举个例子,大家就明白了。
比如说,我通讯录有100个电话号码,我要列出所有人的信息,如果你用列表,你会怎么做?
一个一个一个一个的列出来呗!
但是呢,有个问题,就是这样的形式不好去存取,而且这样取得的数据的前提就是,我需要明确知道元素的全部信息。
所以就有了字典。
他呢是一个key对应一个value,我只要知道key就能取出value。
2、字典的形式
dic = {‘name’:’dajiba’,’age’:18}
key的定义规则:
不可变
value的定义规则:
任意类型
3、字典的增删改查
增加:
dic = {'name':'dajiba','age':}
dic['sex']='man'
print(dic)
打印结果:
{'sex': 'man', 'age': , 'name': 'dajiaba'}
删除:
有一个万能的删除法
dic={'name':'dajiaba','age':}
del dic['name']
print(dic)
打印结果
删除了name
{'age': }
改
dic={'name':'dajiaba','age':}
dic['name']='jixuege'
print(dic)
打印结果
{'age': , 'name': 'jixuege'}
查
dic={'name':'dajiaba','age':}
#查询,如果没有回报错
print(dic['name'])
#查询,如果没有不会报错
print(dic.get('name'))
打印结果:
dajiaba
dajiaba
三级菜单
要求:
- 打印省、市、县三级菜单
- 可返回上一级
- 可随时退出程序
永远的痛,下面就附上几个实现的方法:
方法一:
#!/usr/bin/env python
# -*- coding: utf- -*-
#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) == :continue if choice == "b":
if len(menu_level) ==:break
new_menu=menu_level[-]
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([,,,])
t = set("Hello") s.update([,,,])
print(s)
打印结果如下:
{, , , , , } 使用remove()可以删除一项:
t = set("Hello")
t.remove('H')
print(t)
打印结果如下:
{'o', 'l', 'e'} 长度
s = set([,,,])
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', , , 'e', 'o', , }
或者是
s.union(t) 交集
print(s.intersection(t))
或者
s & t s中有但是t中没有的元素
s.difference(t)
或者
s - t
小结
1、字典及基本操作
2、三级菜单
3、集合及基本操作
一个初学者的辛酸路程-Python基础-3的更多相关文章
- 一个初学者的辛酸路程-python操作SQLAlchemy-13
前言 其实一开始写blog,我是拒绝的,但是,没办法,没有任何理由抗拒.今天呢,要说的就是如何使用Python来操作数据库. SQLAlchemy SQLAlchemy是Python编程语言下的一款O ...
- 一个初学者的辛酸路程-了解Python-2
前言 blog花了一上午写的,结果笔记本关机了,没有保存,找不到了,找不到了啊,所以说,你看的每一篇blog可能都是我写了2次以上的--.哎!! 代码改变世界,继续......... Python基础 ...
- 一个初学者的辛酸路程-FTP-9
前言 今天,我要描述一个FTP的故事 主要内容 嗯,今天主要以阶梯性的形式来做一个FTP项目. 第一步: 我要实现这么一个功能,一个FTP客户端,1个FTP服务端,2端建立连接以后可以进行通讯. 服务 ...
- 一个初学者的辛酸路程-socket编程-8
前言: 你会发现会网络是多么幸福的事情 主要内容: socket 概念: socket本质上就是2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递.我们知道网络通信都是基于 ...
- 一个初学者的辛酸路程-初识Python-1
前言 很喜欢的一句话,与诸位共勉. 人的一切痛苦,本质上都是对自己无能的愤怒----王小波. 初识Python 一.它的爸爸是谁 首先,我们需要认识下面这位人物. 他是Python的创始人,吉多范罗苏 ...
- 一个初学者的辛酸路程-依旧Django
回顾: 1.Django的请求声明周期? 请求过来,先到URL,URL这里写了一大堆路由关系映射,如果匹配成功,执行对应的函数,或者执行类里面对应的方法,FBV和CBV,本质上返回的内容都是字符串 ...
- 一个初学者的辛酸路程-继续Django
问题1:HTTP请求过来会先到Django的那个地方? 先到urls.py ,里面写的是对应关系,1个URL对应1个函数名. 如果发URL请求过来,到达这里,然后帮你去执行指定的函数,函数要做哪些事 ...
- 一个初学者的辛酸路程-初识Django
前言: 主要是关于JavaScript的高级部分以及Django 主要内容: 一.jQuery 事件绑定: DOM事件绑定: -直接在标签上绑定 第一种: $('.title').click(func ...
- 一个初学者的辛酸路程-jQuery
前言: 主要概要: 1.HTML+CSS补充 2.DOM事件 3.jQuery示例 内容概要: 1.布局 代码如下 <!DOCTYPE html> <html lang=" ...
随机推荐
- [转] windows 上用程序putty使用 ssh自动登录Linux(Ubuntu)
需求: 在Win7电脑上使用putty(一种ssh客户端)连接Ubuntu 工具: puttygen.exe 和 putty.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型 ...
- 【angular+bootstrap】angular初级的时间选择器
近期的一个项目,是用angular来写的,本来框架就是第一次接触,使用相关插件的时候就感觉更加没有头绪了,其中一个插件就是时间选择器.比较好用时间选择器就是bootstrap里面的datetimepi ...
- 主机无法访问虚拟机的httpd服务
症状:虚拟机装的centos6.3 通过桥接的方式与主机连接 虚拟机通过yum安装httpd服务 在主机浏览器中输入 虚拟机ip 无法访问虚拟机Apache 虚拟机和主机可以相互ping通 解决:关 ...
- H264的coded_block_pattern编码块模式
1 词汇约定 CodedBlockPatternLuma:一个宏块的亮度分量的coded_block_pattern CodedBlockPatternChroma:一个宏块的色度分量的coded_b ...
- 私有云Mariadb集群搭建
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性, 同时提高系统的负载能力,集群部署是必不可少的. MariaDB Gale ...
- Java Day03 面向对象程序设计
1.面向对象 面向对象是指一种程序设计泛型,同时也是一种程序开发的方法. 2.类 类是一种抽象的概念,类中包含了数据与对数据的操纵. 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类.类是对象 ...
- Nis+Nfs+Autofs
Nis: NIS服务的应用结构中分为NIS服务器和NIS客户机两种角色 NIS服务器集中维护用户的帐号信息(数据库)供NIS客户机进行查询 用户登录任何一台NIS客户机都会从NIS服务器进行登录认证, ...
- Linux文件系统简介及常用命令
在linux系统中一切皆是文件,下面简要总结了一下linux文件系统中分区类型.文件系统类型以及常用命令. 一.分区类型1.主分区:最多只能有四个2.扩展分区:只能有一个,也可以看做是主分区的一种.即 ...
- fidder https以及Fiddler抓取HTTPS协议
一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...
- 简单的java程序通过对话框输出 计算加减乘除运算(运算方法可选择)
import javax.swing.JOptionPane; // import class JOptionPane public class Addition { public static vo ...