Python - 字典元组、集合

文章目录

前言

一、字典的相关操作

1.查单个

  1.1 获取字典中某个键对应的值

  1.2生活中的字典的运用

         a.案例

2.字典的增删改

 2.1 增 - 添加键值对

 2.2 删 - 删除键值对 

    1)del 字典[键] - 删除字典中指定键对应的键值对

    2)字典.pop(键)  - 取走字典中指定键对应的值

 2.3 改 - 修改某个键值对的值

二、元组

1.什么是元组(tuple)

1.1空元组

1.2只有一个元素的元组,唯一的元素后面必须加上逗号

1.3元组有序

1.4 在没有歧义的情况下,元组的()可以省略

2. 查 - 元组的查操作和列表的查操作一样

 3.元组是不可变的列表

 三. 集合

1.什么是集合

1.1 集合自带去重功能

1.2 空集合:set{}

1.3 集合无序 

1.4 集合中的元素必须是不可变类型的数据

 2. 数学集合运算:交集,并集,差集,对称差集,子集,真子集

总结


前言

          学习Python基础知识,不可忽略的重要一部分便是字典元组和集合这些存储结构。

          本节内容将描述这些存储结构增删改查的相关操作。


一、字典的相关操作

1.查单个

  1.1 获取字典中某个键对应的值

'''
1)字典[键]   -  获取字典中指定键对应的值,如果键不存在程序会报错
2)字典.get(键)  -  获取字典中指定键对应的值,如果键不存在返回None
3)字典.get(键,默认值) - 获取字典中指定键对应的值,如果键不存在返回默认值
'''

  1.2生活中的字典的运用

         a.案例
class1 = {
    'name': 'class1',
    'address': '1教室',
    'teacher': {'name': '李老师', 'age': 18, 'QQ': '154343454'},
    'head_teacher': {'name': '张老师', 'age': 18, 'tel': '110'},
    'students': [
        {'name': 'stu1', 'age': 22, '专业': '数学', 'link_man': {'name': '张三', 'tel': '119'}},
        {'name': 'stu2', 'age': 17, '专业': '计算机', 'link_man': {'name': '李四', 'tel': '2923'}},
        {'name': 'stu3', 'age': 33, '专业': '材料', 'link_man': {'name': '王五', 'tel': '12302'}},
        {'name': 'stu4', 'age': 25, '专业': '化学', 'link_man': {'name': '老王', 'tel': '39823'}},
        {'name': 'stu5', 'age': 28, '专业': '计算机', 'link_man': {'name': '赵六', 'tel': '2029834'}},
        {'name': 'stu6', 'age': 20, '专业': '工程', 'link_man': {'name': '钱七', 'tel': '92234'}}
    ]
}

# 1)获取讲师的名字
print(class1.get('teacher').get('name'))
print('<--------------------------SAN石--------------------------->')

# 2)获取班主任的电话
print(class1['head_teacher'].get('tel'))
print('<--------------------------SAN石--------------------------->')

# 3)获取所有学生的名字
num1 = class1['students']
for x in num1:
    print(x.get('name'))
print('<--------------------------SAN石--------------------------->')

# 4)获取所有计算机学生的名字
num1 = class1['students']
for x in num1:
    if x.get('专业') == '计算机':
        print(x.get('name'))
print('<--------------------------SAN石--------------------------->')

# 5)获取未成年学生的联系人的电话
num1 = class1['students']
for x in num1:
    if x.get('age') < 18:
        print(x.get('name'))

2.字典的增删改

 2.1 增 - 添加键值对

'''
1)字典[键] = 值       -     如果键不存在就在字典中添加键值对,如果键已经存在则修改键对应的值

2)字典.setdefault(键,值)   -  如果键不存在就在字典中添加键值对,如果键存在就不添加(也不会修改)
'''

dog = {'name': '财财', 'breed': '泰迪', 'age': 2}
print(dog)

dog['color'] = '白色'
print(dog)             # {'name': '财财', 'breed': '泰迪', 'age': 2, 'color': '白色'}

dog.setdefault('weight', 10)
print(dog)             # {'name': '财财', 'breed': '泰迪', 'age': 2, 'color': '白色', 'weight': 10}

 2.2 删 - 删除键值对 

    1)del 字典[键] - 删除字典中指定键对应的键值对
    2)字典.pop(键)  - 取走字典中指定键对应的值
dog = {'name': '财财', 'breed': '泰迪', 'age': 2}
print(dog)

dog['color'] = '白色'
print(dog)             # {'name': '财财', 'breed': '泰迪', 'age': 2, 'color': '白色'}

dog.setdefault('weight', 10)
print(dog)             # {'name': '财财', 'breed': '泰迪', 'age': 2, 'color': '白色', 'weight': 10}

 2.3 改 - 修改某个键值对的值

dog = {'name': '财财', 'breed': '泰迪', 'age': 2}
print(dog)

dog['name'] = '大黄'
print(dog)             # {'name': '大黄', 'breed': '泰迪', 'age': 2}

二、元组

1.什么是元组(tuple)

"""
容器;将()作为容器的标志,里面多个元素用逗号隔开:(数据1,数据2,数据3,...)
不可变的;元组是有序的
元素:没有要求
"""
1.1空元组
t1 = ()
1.2只有一个元素的元组,唯一的元素后面必须加上逗号
t2 = (10,)
print(t2)
1.3元组有序
t2 = (10,)
print(t2)
1.4 在没有歧义的情况下,元组的()可以省略

    注:直接将多个元素用逗号隔开表示也是元组

t4 = 10, 20, 30
print(t4)        # (10, 20, 30)

2. 查 - 元组的查操作和列表的查操作一样

names = ('英雄联盟', '原神', '开心消消乐', '火影忍者')
print(names[0], names[-1])           # 英雄联盟 火影忍者
print(names[1::2])                   # ('原神', '火影忍者')

for x in names:
    print(x)

for x in range(len(names)):
    print((x, names[x]))

for x, y in enumerate(names):
    print(x, y)

 3.元组是不可变的列表

          列表中除了和增删改相关的操作外,其他操作元组全部都支持

 三. 集合

1.什么是集合

'''
容器:将{}作为容器的标志,里面多个元素用逗号隔开:{数据1,数据2,数据3,...}
可变的;无序的
元素:a.不可变类型数据  b.元素必须是唯一(集合自带去重功能)
'''

1.1 集合自带去重功能

names = ['张三', '李四', '张三', '王五', '王五', '张三', '大黄']
print(set(names))     # {'大黄', '王五', '李四', '张三'}

1.2 空集合:set{}

s1 = {}
print(type(s1))        # 

1.3 集合无序 

print(({2, 3, 4} == {4, 3, 2}))    # True

1.4 集合中的元素必须是不可变类型的数据

s1 = {10, 'abc', (20, 10)}
# s1 = {10, 'abc', [20, 10]}        # 报错

 2. 数学集合运算:交集,并集,差集,对称差集,子集,真子集

s1 = {1, 2, 3, 4, 5, 6}
s2 = {4, 5, 6, 7, 8}
# 1)交集: 集合1 & 集合2     -  求两个集合的公共部分
print(s1 & s2)             # {4, 5, 6}

# 2)并集: 集合1 | 集合2     -  求两个集合合并成一个集合
print(s1 | s2)             # {1, 2, 3, 4, 5, 6, 7, 8}

# 3)差集: 集合1 - 集合2     -  集合1中没有包含在集合2中的元素
print(s2 - s1)             # {8, 7}
print(s1 - s2)             # {1, 2, 3}

# 4)对称差集: 集合1 ^ 集合2 -   获取两个集合非公共部分的所有元素
print(s1 ^ s2)             # {1, 2, 3, 7, 8}

# 5)子集和真子集
# {1, 2, 3}的子集:{},{1},{2},{3},{1, 2},{1,3},{2, 3},{1, 2, 3}
# {1, 2, 3}的真子集:{},{1},{2},{3},{1, 2},{1,3},{2, 3}
# 集合1 >= 集合2      -    判断集合2是否是集合1的子集
# 集合1 > 集合2      -    判断集合2是否是集合1的真子集
print({100, 200, 300, 400} > {1, 2})          # False(判断是否是真子集而不是比较大小)

print({1, 2, 300, 400} > {1, 2})              # True

总结

以上内容就是关于在Python中字典、元组、集合的增删改查基础用法,我们要学会不同的数据使用其适合的相关存储结构,这样才能使数据更便于操作

你可能感兴趣的:(python,python,开发语言)