day8 基本数据类型之字典

一、字典(dict)

1.用途:
2.定义方式:在{}内用逗号分隔开多个元素,每个元素都是key:value的形式,其中value可以使任意类型,而key必须是不可变类型,通常是字符串类型
dic数据类型转换:
    dic = dict([('name','egon'),('age',18)])
    print(dic) # 转为字典
    输出结果:{'name': 'meng', 'age': 18}
    
    dic = dict(name='meng',age=18,gender='male')
    print(dic)
    输出结果:{'name': 'meng', 'age': 18, 'gender': 'male'}
3.常用操作+内置的方法
1)、按key存取值:可存可取
    dic = {'name':'meng','age':18}
    dic['gender'] = 'male'  # 可以加入字典里
    print(dic['name'])  # 按照key值取
    输出结果:meng
2)、长度
    dic = {'name':'meng','age':18}
    print(len(dic)) # 求取字典的长度
    输出结果:2
3)、成员运算in和not in
    dic = {'name':'meng','age':18}
    print('name' in dic)
4)、删除
    dic = {'name':'meng','age':18}
    del dic['name'] # 删除
    print(dic)
    输出结果:{'age': 18}
5)、循环
    dic = {'name':'meng','age':18}
    for i,z in dic.items():
        print(i,z)
练习:
    nums = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    dic = {'k1':[],'k2':[]}
    for num in nums:
        if num > 66:
            dic['k2'].append(num)
        else:
            dic['k1'].append(num)
    print(dic)
# 总结:字典可以存多个值,是无序的,是可变的。

二、集合类型

1.用途
1)关系运算
2)去重
    names = ['egon','tom','jack','egon','egon','egon']
    s = set(names)
    print(list(s))
2、定义方式:在{}内用逗号分隔开多个元素,集合元素的特点如下
            1、集合内元素不能重复
            2、集合内的元素必须是不可变类型
            3、集合内的元素无序

    s = {111,33.333,(1,2,3),111,111,111,111}  # s=set(...)
    print(s)

1)、set数据类型转换
    print(set('hello'))
    print(set([(1,2,3),[1,2,3,4,5],(1,2,3)]))
3、常用操作+内置的方法
优先掌握的操作:
1)、长度len
s = {1,2,3}
print(len(s))

2)、成员运算in和not in
s = {1,2,3}
print(1 in s)

pythons = {'张三', '李四', '王五', '刘6', 'egon', 'lili', '李建国'}
linuxs = {'铁蛋', '铜蛋', '钢弹', 'egon', '狗蛋', 'lili'}

3、|合集: 求所有的同学姓名
    print(pythons | linuxs)
    print(pythons.union(linuxs))

4、&交集: 同时报名两门课程的同学
    print(pythons & linuxs)
    print(pythons.intersection(linuxs))

    pythons = pythons & linuxs
    pythons.intersection_update(linuxs)	

5、-差集: 求只报名了python课程的同学
    print(pythons - linuxs)
    print(pythons.difference(linuxs))
    pythons.difference_update(linuxs)

		print(linuxs - pythons)

6、^对称差集: 求没有同时报名两门课程的同学
    s = (pythons - linuxs) | (linuxs - pythons)
    s = pythons ^ linuxs
    print(s)

    s = pythons.symmetric_difference(linuxs)
    print(s)

7、==
    s1 = {1,2,3}
    s2 = {3,1,2}
    print(s1 == s2)

8、父集:>=,子集:<=
    s1 = {1,2,3}
    s2 = {1,2}
    s2 = {1,2,4}
    print(s1 >= s2)
    print(s1.issuperset(s2))

    print(s2 <= s1)
    print(s2.issubset(s1))

三、文件处理

"""
1 什么是文件
    文件是操作系统提供给应用程序或者说用户的一种操作硬盘功能
    应用程序----------》
    操作系统---------》文件
    计算机硬件-------》硬盘
2 为何要处理文件
    为了操作硬盘
3 如何处理文件
"""
    f = open(r'a.txt',mode='rt',encoding='utf-8') # 打开文件
    data = f.read() # 读取文件
    print(data)

	for line in f:
	print(line)
    user,pwd = line.strip('\n').split(':')
    print(user,pwd)


    f.close() # 关闭文件

    print(f)
    f.read()