字典、元组、集合的内置方法


字典、元组、集合的内置方法

字典内置方法

dic = {
    'name' : 'jason'
    'age' : 10
    'hobbies': ['play game', 'basketball']
}
1. 字典只按K取值 k不存在会直接报错
print(dic['name'])  #  输出为 : jason
print(dic['jason'])  # 报错

2. 按K修改值:新增键值对
dic['name'] = 'jason2'   # 键存在则修改值
print(dic)   # 输出结果 jason转换为jason2
dic['hobbies'].append('read')
print(dic)  # 可在字典中的列表添加值
dic['pwd'] = 111  
print(dic)  # 如果键不存在则添加键值对 'pwd' : 111

3. 统计字典内部键值对的个数
print(len(dic)) 

4. 成员运算 默认只暴露K
print('jason' in dic)  # 因只暴露K则返回为False
print('name' in dic)  # 返回为True

5. 删除元素
del dic['name'] #通过K直接删除对应的K:V键值对
方式二:指定K 然后弹出键值对
print(dic.pop('age'))
print(dic)

6. 获取V值
print(dic['name'])  # 键存在 输出为jason 按K取值不建议使用
print(dic['sdsd'])  # 键不存在  报错 
print(dic.get('name'))  #jason
print(dic.get('sssd'))  # 键不存在 但不会报错 返回None
print(dic.get('name', 'gary')) # K存在 则直接返回jason
print(dic.get('xxx', 'gary'))  # 第二个参数 可以在K不存在的时候自定义返回信息

7. keys() values() items() 在python2 中为列表 在python3中时迭代器
print(dic.keys())  # 输出为:dict_keys(['name', 'age', 'hobbies]) 获取字典中所有的键 看作为列表
print(dic.values()) # 输出为:dict_values(['jason', 10, ['play game', 'basketball']]) 获取字典中所有点值 看作为列表
print(dic.items()) # 输出为:dict_items([('name', 'jason'), ('age', 10), ('hobbies', ['play game', 'basketball'])])  获取字典中所有的键值对 看作为列表由多个元组组成 元组内有两个元素第一个为K第二个为V

	

字典拓展方法

dic = {
    'name' : 'jason'
    'age' : 10
    'hobbies': ['play game', 'basketball']
}
1. 更新字典 : 键存在则修改,键不存在则创建
dic.update({'name': 'jason2', 'pwd': '111'})
print(dic) # 输出为:{'name': 'jason2', 'age': 10, 'hobbies': ['play game', 'basketball'], 'pwd': '111'}
2. 初始化字典
print(dict.fromkeys(['k1', 'k2', 'k3'],[]))  # 输出为:{'k1': [], 'k2': [], 'k3': []}

"""

res = dict.fromkeys(['k1', 'k2', 'k3'],[]))
res['k1'].append(111)
res['k2'].append(222)
res['k3'].append(333)
print(res)
res['k1'].append(123)
print(res)
"""
输出为:
{'k1': [111, 222, 333], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}

{'k1': [111, 222, 333, 123], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}

3. 当键存在的情况下 不修改而是获取键对应的值
print(dic.setdefault('name', 'jason'))
输出为 : jason

当键不存在的情况下 新增一对键值对 只返回键值对的值
print(dic.setdefault('name2','gary'))
输出为:  gary




元组的内置方法

# 元组:小括号括起来 ,内部有多个元素,元素与元素之间用逗号隔开,元素可为任意数据类型,但是元组不支持修改, 也可以简单的认为它是一个不可变的列表

# 类型转换 :能够支持for循环的数据都可以转换成元组

print(tuple(111))  # 报错
print(tuple(1.123))  # 报错
print(tuple('hello')) # 输出为: ('h', 'e', 'l', 'l', 'o')
print(tuple([1,2,3])) # 输出为 :(1, 2, 3)
print(tuple({'name':'jason', 'pwd': 123})   # 输出为:('name', 'pwd')

## 笔试题
      t1 = (111)
      t2 = (2.22)
      t3 = ('hello')
 '''元组中元素后需要加逗号 哪怕只有一个元素'''
      print(type(('111,')))

t = (111, 222, 333, 444, 555)
1. 索引取值
print(t[2]) # 输出额外 333
print(t[-1])  # 输出为 555
2. 切片操作
print(t[1:5])  # 顾头不顾尾  输出为: (222, 333, 444, 555)
priny(t[:])  # 从索引0到索引5 输出为:  (111,222, 333, 444, 555)
3. 步长
print(t[1:5:2])  #  输出为: (222,444) 
4. 统计元组内元素的个数
print(len(t))  # 输出为 5
5.for 循环
for i in t:
    print(i) #  循环打印t的值 111  222  333  444  555
6. count计数
print(t.count(111))  #  统计111出现的次数  输出为:1

# 习题
t1 = (111, 222, [11, 22, 33])
t1[2].append(44)
print(t1)  #输出为:(111, 222, [11, 22, 33, 44])

     

集合去重操作

1. 定义空集合需要使用关键字set
s1 = set()  
2. 类型转换 能够支持for循环的数据类型都可以转成集合(元素要为不可变类型)
#  去重
s1 = {1, 2, 2, 2, 3, 4, 3, 4, 3, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3}
print(s1)  #  判断为集合形式 直接去重输出 {1, 2, 3, 4}、
name_list = ['jason', 'jason', 'jack', 'jack', 'kevin', 'jason']
s1 = set(name_list)   # 先将 name_list 转换为集合
l1 = list(s1)  # 再将去重后的集合转换为列表
print(l1)   # 输出为: ['jason', 'jack', 'kevin']
# 练习题
去重并保留原来的顺序 (转为集合后会自动排序)
s1 = [1, 2, 2, 2, 3, 4, 3, 4, 3, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3]
s2 = []
for i in s1:   # for循环输出s1列表
    if i not in s2:  # 判断循环输出的i在不在s2中
        s2.append(i)  # 如果不在 在s2依次添加
print(s2)
#输出为;[4, 1, 2, 3]

集合的关系运算

# 关系运算
'''两个群体之间做差异比较'''
friends1 = {'jason', 'jack', 'gary', 'kevin'}
friends2 = {'xxx', 'www', 'jason', 'jack'}
1. 求两个用户的共同好友
print(friends1 & friends2)   # 输出为: {'jason', 'jack'}
2. 求两个用户所有的好友
print(friends1 | friends2)   # 输出为: {'jason', 'jack', 'gary', 'kevin', 'xxx', 'www'}
3. 求用户1独有的好友:
print(friends1 - friends2)  # 输出为: {'gary','kevin'}
4. 求用户2独有的好友:
print(friends2 - friends1)   # 输出为 {'xxx', 'www'}
5. 求用户1 和 用户2 各自的好友
print(friends1 ^ friends2)  # 输出为 {'kevin', 'gary', 'xxx', 'www'}
6. 父集与子集
    s1 = {11, 22, 33, 44}
    s2 = {11, 22}
print(s1 > s2)  # 返回为True
    s3 = {55}
print(s1 > s2)  # 返回为Flase

posted @ 2021-11-09 21:57  JasonBorn  阅读(67)  评论(0编辑  收藏  举报