chenhongl

导航

 

字典key-value形式

  1)取数据方便   #字典里面没有重复的key

  2)查询速度快

#字典是无序的

一、定义一个字典

infos = {
    'name':'王小明',
    'sex':'male',
    'addr':'北京',
    'age':'20'    #最后没逗号
}
print(infos.get('name'))      #>>> 王小明

 

二、字典的方法:

  1)查:

  字典的取值:有两种方法

print(infos.get('name'))  #如果key不存在,返回None

  print(infos.get('name',404)) #如果key不存在,返回定义的404
print(infos['sex'])    #如果key不存在会报错

 

  2)增:三种增加的方式

①infos['phone']=15866661111   #增加一个key-v
②infos.setdefault('money','100w') #增加一个k-v
  print(infos)

这两方式的区别:key存在时,都能增加,但是

infos['phone']=15866661112     #如果key存在时,会修改原来的value
infos.setdefault('name','张晓') #如果key存在时,不会修改原来的值
print(infos)

将一个变量加入字典:

users.setdefault(username,pwd)  #方式一
users[username]=pwd  #方式二

合并两个字典:a.update(b)  

a = {'a':'1'}
b = {'b':'2'}
a.update(b)   #如果b字典的key与a中的key相同b会更新a的value
print(a)

>>> {'a': '1', 'b': '2'}

 

  2)修改:一种方式

infos['name']= '小胖'

 

  3)删:

infos.pop('age')  #指定key来删除
infos.popitem()   #随机删除一个key(用处不大)
del infos['phone']  #指定key来删除
infos.clear()    #清空字典
print(infos)

 

三、字典里常用的三个内置方法

print(d.values())  #获取字典所有的value
print(d.keys())    #获取字典所有的key
print(d.items())   #获取字典所有的k-v

 

四、【字典举例】

people = {
    '田雨':{
        'age':18,
        'money':200000,
        'clothes':'100套',
        'hzp':'n多',
        'shoes':['nike','addis','lv','chanle']
    },
    '张三':{
        '金库':'2000w',
        'house':['三环一套','4环2套'],
        'cars':    {
                'japan':['普拉多','兰德酷路泽'],
                'usa':['林肯','凯迪拉克','福特'],
                'china':['五菱宏光','qq','红旗']
            }
    }
}
people['张三']['cars']['usa'].append('牧马人')

# people['田雨']['shoes'].append('匡威')    #
# print(people)
# people['田雨']['money'] = people['田雨']['money']+200
# people['田雨']['money'] += 200
# print(people)

 

五、字典的循环:

   1)直接循环字典的话,只取到字典的key

for p in people:
    print(p)

  >>>张三

       田雨


  2)循环的时候,同时取字典的key和value

for k,v in people.items():
print(k,'--->',v)

 输出:

田雨 ---> {'age': 18, 'clothes': '100套', 'hzp': 'n多', 'shoes': ['nike', 'addis', 'lv', 'chanle'], 'money': 200000}
张三 ---> {'cars': {'china': ['五菱宏光', 'qq', '红旗'], 'japan': ['普拉多', '兰德酷路泽'], 'usa': ['林肯', '凯迪拉克', '福特', '牧马人']}, '金库': '2000w', 'house': ['三环一套', '4环2套']}

 

  3)字典里面用in来判断某个值是否存在话,只是判断key是否存在

if 'key1' in users: #存在返回True,不存在返回False
    print('xxx')

 

六、【字典练习二】:注册-字典

#注册:验证用户名是否已存在,将新注册的用户名和密码加入到字典
users = {
    'zhangsan':'123456',
    'wangwu':'456789',
}
for i in range(3):      #限制错误3次
    username = input('账号:').strip()
    passwd = input('密码:').strip()
    cpasswd = input('密码确定:').strip()
    if username=='' or passwd=='' or cpasswd=='':  
        print('用户名/密码不能为空')
    elif username in users:
        print('用户名已经被注册!')
    elif passwd!=cpasswd:
        print('两次输入的密码不一致')
    else:
        print('恭喜,注册成功!')
        # users.setdefault(username,passwd)
        users[username]=passwd   #注册成功,将key和value加入users的字典
        break   #
else:
    print('错误次数过多')
print(users)

 

七、【字典练习三】:

#写一个录入学生作业情况的一个程序:
    #1、查看学生作业情况 ,输入用户名   #choice=1
        #存在的话,print
        #不存在的话
    #2、录入学生作业情况(姓名、日期、已交/未交)   #choice=2
    #3、录入的情况允许输入3次,需要验证为空的情况
    #判断choice不存在的情况

homeworks = {
    '张流量':{'2018.3.22':"未交",'2018.3.23':'wei交'},
    '田雨':{'2018.3.22':"未交",'2018.3.23':'wei交'},
}

choice = input("请输入您的选择 1:查看学生作业情况 2:录入学生作业情况:")
if choice == '1':
    for x in range(3):
        name = input("请输入您要查看的学生的姓名:").strip()
        if name in homeworks:
            print("%s:%s" %(name,homeworks[name]))
            break
        elif name=='':
            print("姓名不能为空")
        else:
            print("没有找到此学生信息")
    else:
        print("查询次数过多,请稍后再试")
elif choice == '2':
    for i in range(3):
        username = input("请输入需要录入的学生的姓名:").strip()
        date = input("请输入需要录入的日期:").strip()
        status = input("请输入'已交'或'未交':").strip()
        if username=='' or date=='' or status=='':
            print("录入的信息不完整")
        elif username in homeworks:
            homeworks[username][date] = status  #姓名+ 时间相同时,不报错,可更新原来已录入的状态,效果和update一样
            #homeworks[username].setdefault(date,status) #姓名+ 时间相同时,不报错,但是状态不能更新
            #homeworks[username].update({date:status})
            print("您录入后此学生的信息更新为,%s:%s" % (username, homeworks[username]))
            break
        else:
            homeworks[username] = {date:status} #k-v的形式
            print("您录入学生的信息为,%s:%s" % (username,homeworks[username]))
            break
    else:
        print("输入错误次数过多")
else:
    print("输入错误,请输入1或2")

print("已录入的全部信息:%s" % homeworks)       

 

集合:

一、集合的定义

定义空集合:s = set()

定义集合:s = {1,3,5,7}  #注意与字典区分

d = {'k':'v'}  #字典

 

集合天生就能去重(集合中没有重复的元素),集合也是无序的

s = set('222333555777')  #字符串/list可以强制转换为集合
print(s)

>>> {'5', '7', '2', '3'}  #去除了重复的元素

 

二、集合的交集、并集、差集

  1)取交集:取两个集合都有的元素

s2 = set('112322244556')
s3 = {'1', '1', '2', '5', '6'}
print(s2 & s3)   #取交集的第一种方式
print(s3.intersection(s2))   #取交集第二种方式

>>> {'5', '1', '2', '6'}
{'5', '1', '2', '6'}

 

2)取并集:两个集合合并到一起,并去重

print(s2 | s3)     #方式一
print(s2.union(s3))   #方式二

 

3)取差集:去掉set3

print(s2-s3)
print(s2.difference(s3)

 

4)对称差集:保留两集合都没有的,去掉都有的

print(s2 ^ s3)
print(s4.symmetric_difference(s5))

 

三、集合的方法:

增、删、改、判断交集

s.add('ss')    #加元素
s.pop()        #随机删除
s.remove('ss')   #删除某个元素
s.update({1,2,3}) #把另一个集合加进去

s.isdisjoin(s1)   #两个集合没有交集返回True,有交集返回False

 

                                                     
张三
posted on 2018-04-12 16:53  chenhongl  阅读(262)  评论(0)    收藏  举报