一个初学者的辛酸路程-Python基础-3
前言
不要整天沉迷于学习….
字典
一、我想跟你聊聊字典
1、为何要有字典?
大家有没有想过为什么要有字典?有列表不就可以了吗?
也许大家会这么认为,我给大家举个例子,大家就明白了。
比如说,我通讯录有100个电话号码,我要列出所有人的信息,如果你用列表,你会怎么做?
一个一个一个一个的列出来呗!
但是呢,有个问题,就是这样的形式不好去存取,而且这样取得的数据的前提就是,我需要明确知道元素的全部信息。
所以就有了字典。
他呢是一个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
三级菜单
要求:
- 打印省、市、县三级菜单
- 可返回上一级
- 可随时退出程序
永远的痛,下面就附上几个实现的方法:
方法一:
#!/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)) 打印结果如下: 4 测试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
小结
1、字典及基本操作
2、三级菜单
3、集合及基本操作
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经