一个初学者的辛酸路程-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

三级菜单

 

要求: 

  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]
View Code

 

打印效果如下:

 

集合

一、为何要有集合?

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
View Code

 

 

小结

1、字典及基本操作

2、三级菜单

3、集合及基本操作

 
 
posted @ 2016-10-23 15:12  我还可以试试  阅读(550)  评论(0编辑  收藏  举报