一,字典
字典是另一种可变容器模型,且可存储任意类型对象。
1,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])
2,修改字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新 Age
dict['School'] = "菜鸟教程" # 添加信息
print("dict['Age']: ", dict['Age'])
print("dict['School']: ", dict['School'])
del dict['Age']#删除某个键值对
print(dict)
dict.clear() #清楚字典
print(dict)
del dict #删除字典
print(dict)
3,字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
dict={'python':34,'java':87,'python':99}
print(dict)
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行.
dict={['python']:34,'java':87,'python':99}
print(dict)
4,方法
1)深拷贝,浅拷贝
#浅拷贝和深拷贝
#浅拷贝只拷贝父类 不拷贝子类
a={1:[1,2,3]}
print('=======原始值地址========')
print('id(a)=',id(a))
print('id(a[1])=',id(a[1]))
b=a
#复制全都一样
print('====普通赋值=====')
print('id(b)=',id(b))
print('id(b[1])=',id(b[1]))
c=a.copy()
#父类的地址不一样 因为拷贝了
print('====浅拷贝=====')
print('id(c)=',id(c))
print('id(c[1])=',id(c[1]))
d=copy.deepcopy(a)
#地址都不一样
print('====深拷贝=====')
print('id(d)=',id(d))
print('id(d[1])=',id(d[1]))
2)dict.fromkeys(seq[,value]) 用序列值创建新字典
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print("新的字典为 : %s" % dict)
dict = dict.fromkeys(seq, 10)
print("新的字典为 : %s" % dict)
3)dict.get(key, default=None) 返回键的值
dict = {'Name': 'Runoob', 'Age': 27}
print ("Age 值为 : %s" % dict.get('Age'))
print ("Sex 值为 : %s" % dict.get('Sex'))
print ("Sex 值为 : %s" % dict.get('Sex', "NA"))
4)dict.items() 以列表返回可遍历的(键, 值) 元组数组
dict2={'python':34,'java':87}
print(dict2.items())
for i in dict2.items():
print(i)
for i,j in dict2.items():
print(i,j)
5)key in dict 查询键是否在字典里,不能用于判断值
dict2={'python':34,'java':87}
print('python' in dict2)
print(34 in dict2)
6)dict.keys() 返回键
dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
print(dict1.keys())
for i in dict1.keys():
print(i)
7)dict.update(dict2) 将dict2的键值对添加到dict中
dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict2={'python':34,'java':87}
dict1.update(dict2)
print('更新后的dict1:',dict1)
8)dict.values() 返回值
dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
print(dict1.values())
for i in dict1.values():
print(i)
9)dict.pop(key) 返回删除的值
dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict1.pop('me')
print(dict1)
10)dict.popitem() 随意删除某键值对并返回值(一般删除末尾对)
dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict1.popitem()
print(dict1)
或者
二,集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
a = set('abracadabra')
print(a)
集合的基本操作
添加元素.add()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)
thisset.update([1,4],[5,6])
print(thisset)
移除元素 s.remove( x )
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
清空集合
s.clear()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.clear()
print(thisset)
三,判断条件
year = int(input("输入一个年份: "))
if (year % 4) == 0:
if (year % 100) == 0:
if (year % 400) == 0:
print("{0} 是闰年".format(year)) # 整百年能被400整除的是闰年
else:
print("{0} 不是闰年".format(year))
else:
print("{0} 是闰年".format(year)) # 非整百年能被4整除的为闰年
else:
print("{0} 不是闰年".format(year))
四,三目表达式
c=a if a>b else b
#让两个list中的偶数分别相加,应该结果是2+6,4+6,2+8,4+8
x=[1,2,3,4]
y=[5,6,7,8]
res=[i+j for i in x for j in y if i%2==0 and j%2==0]
print(res)
五,循环语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句: