字典和集合

一.字典

字典是容器类型(序列),以键值对作为元素
语法{key1:value1,key2:value2....}
键(key):字典中key唯一,每一个都不同,可用数字,布尔,字符串,元祖.推荐使用字符串
值(value):可以不唯一,可以是任何类型的数据
1.声明字典
dict1 = {'name':'小黄','age':20}
2.查

a.语法:字典[key]-----通过key获取值

dict1 = {'name':'小黄','age':20}
print(dict1['name'])
#输出结果是:小黄

b.语法:字典.get(key)-----如果key不存在,不会报错,而是返回None

dict1 = {'name':'小黄','age':20}
print(dict1.get['name'],dict1.get('money'))
#输出结果是:小黄 None

c.遍历字典

dog = {'name':'旺财','color':'yellow','age':3}
for key in dog:
  print(key)
#遍历字典直接取到的是字典所有key值

3.改

语法:字典[key] = 新值
key本来就存在的

dict1 = {'name':'小黄','age':20}
dict1['name']='小灰'
print(dict1)
#输出结果是:{'name': '小灰', 'age': 20}

4.增

语法:字典[key] = 值
key本来不存在

dict1 = {'name':'小黄','age':2}
dict1['type']='仓鼠'
print(dict1)
#输出结果是:{'name': '小灰', 'age': 2,'type':'仓鼠'}

5.删(删除的是键值对)

a.del 字典[key]

dict1 = {'name':'小黄','age':20}
del dict1['age']
print(dict1)
#输出结果是:{'name': '小黄'}

b. 字典.pop(key)

dict1 = {'name':'小黄','age':20}
dict1.pop('age')
print(dict1)
#输出结果是:{'name': '小黄'}

二.字典的相关运算

1.字典不支持'+'和'*'
2.in 和 not in 判断key是否存在
返回值是布尔值
3.len()

  1. 字典.clear()
    删除字典中所有的元素
  2. 字典.copy()
    拷贝字典中所有的元素,放到一个新的字典中
dict1 = {'a':1,'b':2}
dict2 = dict1 #将dict1中的地址赋给dict2,两个变量指向同一块内存区域
dict3 = dict1.copy() #将dict1中的内容复制到一个新的内存区域中,将新的地址给dict3
dict1['a']=100
print(dict2,dict3)
#输出结果是:{'a': 100, 'b': 2} {'a': 1, 'b': 2}

6.dict.fromkeys(序列,默认值=None)
将序列中的每个值作为key,默认值为value,创建一个新的字典.默认值可以不写,写的话只能写一个.

  1. 字典.keys()
    获取字典中所有的key,以dict_keys的形式返回
    8.字典.values()
    获取字典中所有的value
dict1 = {'a':1,'b':2}
dict1.values()
print(dict1)
#输出结果:{'a': 100, 'b': 2}
  1. 字典.items()
    将字典中所有的键值对,转换成一个一个的元组,key作为元组的第一个元素,value作为元组的第二个元素,这种方式不推荐使用.

10.字典.setdefault(key,默认值=None)
给字典添加键值对,如果key本身存在,这个方法无效

11.字典1.update(字典2)
将字典2中的键值对更新到字典1中
更新方式: 如果字典2中的key,在字典1中是存在的,就用字典2中的值更新字典1中的值,不存在就添加到字典1中

dict1 = {'aa':1,'bb':'abc','cc':True}
dict1.update({'aa':99,'dd':'你好'})
print(dict1)
#输出结果是:{'aa': 99, 'bb': 'abc', 'cc': True, 'dd': '你好'}

四.列表和字典综合使用

1.列表中有字典

student_system = [
    {'name':'ymj','age':24,'tel':1122,'native_place':'兰州'}

]

2.字典中有列表

py_class = {
    'class_name':'python1806','students':[
        {'name':'student1','age':20,'id':'001'},
        {'name': 'student2', 'age': 20, 'id': '001'},
        {'name': 'student3', 'age': 20, 'id': '001'}

    ]
}

练习:输入一个学生的姓名,根据姓名去删除对应的学生

py_class = {
    'class_name':'python1806','students':[
        {'name':'student1','age':20,'id':'001'},
        {'name': 'student2', 'age': 20, 'id': '001'},
        {'name': 'student3', 'age': 20, 'id': '001'}

    ]
}


list1 =py_class['students']
name1 = input('请输入要删除的姓名')
for dict1 in list1[:]:
    if name1 == dict1['name']:
        list1.remove(dict1)
print(py_class)
 #输入:student1       
#输出结果是:{'class_name': 'python1806', 'students': [{'name': 'student2', 'age': 20, 'id': '001'}, {'name': 'student3', 'age': 20, 'id': '001'}]}

五.集合(set)

集合是python中的一种容器类型:无序的,可变的,值唯一.和数学中的集合差不多
除了可变的类型,其他的都行,数字,布尔,字符串是可以的(和字典的key的要求一样)

1.声明一个集合

set1 = {1,'abc'}
print(set1,type(set1))
#输出结果是:{'abc', 1} <class 'set'>

将其他的序列转换成集合,自带一个去重功能

2.查(获取集合中的元素)
集合是不能单独获取其中的某一个元素的
只能通过遍历获取每一个元素

for item in set1:
    print(item)
#输出结果是:abc 1

3.增(添加元素)
集合.add(元素)

b.集合1.update(集合2):将集合2中的元素,添加到集合1中
集合.update()

4.删
集合.remove(元素)

删除所有的元素----集合.clear()

5.改(改不了)

6.数学相关的集合运算
a.判断包含情况:
集合1>=集合2:集合1中是否包含集合2
集合1<=集合2:集合2中是否包含集合1

print({1,2,3,4,5}>={2,3,1})
#输出结果是:True

b.求并集 : |

c.求交集: &
求两个集合的公共部分

d.求差集: -

e.求补集:^
求两个集合除了公共部分以外的部分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容