#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "w.z"
# Date: 2017/6/94-day
# review-list
# list 删除
# pop
l = [1, 2, 3, [3, 4]]
print(l[3])
l[3].pop(0)
print(l)
# del
l = [1, 2, 3, [3, 4]]
del l[3][1]
print(l)
# remove 指定元素的值,对元素进行删除
l = [1, 2, 3, [3, 4]]
print(l[3].remove(4))
print(l)
# 字符串多重赋值
a, b, c, d, e = 'hello'
print(a, e)
a, *_, e = 'hello'
print(a, e)
# 1. 字典通过key取value的方法
# 字典打印 keys ,打印出来类型是dict_keys ,可通过list函数转化为列表(list)类型,或者通过 for ... in ... 打印
dict1 = {'name': 'lisan', 'class': '5', 'room':'room32'}
print(list(dict1.keys()))
print(type(dict1.keys()))
for i in dict1.keys():
print(i)
# 打印 字典的 values, dict1.values的类型是dict_keys ,可通过list()函数转化
dict1 = {'name': 'lisan', 'class': '5', 'room':'room32'}
print(dict1.values())
print(list(dict1.values()))
print(list(dict1.values())[1])
# {}.get('key') {}['key']
# {}.get('a','cant find') //key不存在,返回null,返回 str
dd = {'a': '1', 'b': '2'}
print(dd['a'])
print(dd.get('bb', 'the key do not exits')) # 此处的返回值,只有在取不到的时候才能返回
# 2.打印字典的key value
# for i in dd :打印出来的是key的值
dd = {'a': '1', 'b': '2'} # 打印key
for i in dd:
print(i)
# items()
# for i in dict1.items(): 类型为dict.items
dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
print(dict1.items()) # dict_items([('name', 'lisan'), ('class', '5'), ('room', 'room32')])
print(type(dict1.items()))
for dd in dict1.items():
print(dd)
print(type(dd)) # ddd ('key','value') 打印key-value组成的元组
for k, v in dict1.items():
print(k, v) # 通过 k,v 两个变量打印元组里的两个值
# print(dd.popitem()) 随机删除字典元素,其实是删除最后一位
dict3 = {'ads': '1', 'store': '2', 'epd': '3'}
print(dict3.popitem())
print(dict3)
# 3 . 字典的赋值
dd1 = dict({'a': '1', 'b': '2'})
print(dd1)
d3 = dict(name='zhangwei', age=18)
print(d3)
a1 = {}
a2 = dict()
print(a1, a2)
a5 = dict([('b', 1), ('c', 2), ('d', 3)]) # dict可以把列表里面的元组队,转化为字典,合理
print(a5)
dd6 = {}.fromkeys(['name', 'age'], ['1'])
dd7 = {}.fromkeys(['name', 'age'], ['egon', '18']) # key value 值是一样的
print(dd7)
print(dd6)
# 4.字典的删除操作: pop() popitem()
dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
print(dict1.pop('room3', 'bu cun zai '))
dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
print(dict1.popitem())
print(dict1)
# 5. setdefault 存在key 则返回values,不存在key,则把key-value值加上去
dict1 = {'name': 'lisan', 'class': '5', 'room': 'room32'}
print(dict1.setdefault('name2', 'dasdsa'))
print(dict1)
# 6.update() 把dict5 里没有的键值对
dict5 = {'name': 'alex', 'class': 'six'}
dict6 = {'name': 'alex', 'socre':'99'}
dict5.update(dict6)
print(dict5)
# 集合
# dict 逻辑操作
# c1.update(c2) ## 把c2的值给c1 ,key一样覆盖,key不一样,增加
# set 对集合进行排重
set1 ={'a', 's', 'd', 's', 'f', 'a'}
print(set(set1))
names = ['egon', 'alex', 'tim', 'ben']
print(set(names))
print(list(set(names)))
# 数据类型自带bool值 ,空或者不为空
l = ['1']
if not l:
print('空')
else:
print('不空')
# 集合 :
# 集合内元素必须是唯一的
# 集合内的元素必须是可hash的,也就是不变类型,比如,不能是列表
set3 = {'egon', 'alex', 'tim', 'ben'}
set4 = {'alex', 'xiaoxue', 'songjia'}
print(set3)
print(set3 & set4) # 取交集
print(set3 | set4) # 取合集
print(set3 - set4) # 取差集
# 集合方法
# difference() 取差集
set3 = {'egon', 'alex', 'tim', 'ben'}
set4 = {'alex', 'xiaoxue', 'songjia'}
print(set3.difference(set4))
# difference_update() 取差集,并且更新集合
set3 = {'egon', 'alex', 'tim', 'ben'}
set4 = {'alex', 'xiaoxue', 'songjia'}
print(set3.difference_update(set4))
print(set3)
# 交集 并集 差集
set3 = {'egon', 'alex', 'tim', 'ben'}
set4 = {'alex', 'xiaoxue', 'songjia'}
print(set3 & set4) # 同时报名set3 和set4 的同学
print(set3.intersection(set4))
print(set3 | set4) # 报名的所有同学
print(set3.union(set4))
print(set3 - set4) # 只报名set3的同学
print(set3.difference(set4))
print(set4 - set3) # 只报名set4的同学
print(set4.difference(set3))
# is disjoint 没有交集,返回True
s1 = {1, 2, 'q'}
s2 = {1, 2, 3,}
s3 = {1, 2}
s4 = {'a', 'b'}
print(s1.isdisjoint(s2))
print(s3.issubset(s2))
s3.update(s4)
print(s3)
#
s1 = {'a', 1}
s1.add(2)
s1.discard(1)
s1.remove('a')
s1.pop()
print(s1)
names = ['egon', 'alex', 'tim', 'aterm']
print(list(set(names)))