首页 > 其他分享 >数据类型的常用操作和内置方法-下

数据类型的常用操作和内置方法-下

时间:2022-09-30 17:24:53浏览次数:52  
标签:常用 内置 kaka 数据类型 list pro2 pro1 user l1

数据类型的常用操作和内置方法下

字典内置方法

类型转换

字典的类型转换要求苛刻,一般不会使用

dict([['key1', 1], ['key2', 2]])  # 只能转换多元素的类型,且每个元素中还要有两个元素
# {'key1': 1, 'key2': 2}

常用操作与内置方法

  1. 按k取值

    user_list = {'kaka': '123', 'qiqi': '111', 'bobo':'765'}
    user_list['kaka']  # '123'
    user_list['bobo']  # '765'
    
  2. 用内置方法get取值(推荐)

    user_list.get('kaka')  # '123'
    
    - 键不存在的情况
    print(user_list.get('lulu'))  # None
    print(user_list.get('lulu', 'no key in this dict'))  # no key in this dict
    # get方法还可以加第二参数作为没有查找到键的返回信息
    
  3. 修改值的数据

    user_list['kaka'] = '110'  # 当键存在时,这一句就是修改对应的值
    user_list   # {'kaka': '110', 'qiqi': '111', 'bobo': '765'}
    
  4. 新增键值对

    user_list['lulu'] = '119'  # 当键不存在的时候,这一句就是新增键值对
    user_list   # {'kaka': '110', 'qiqi': '111', 'bobo': '765', 'lulu': '119'}
    
  5. 删除数据 —— del

    1.del通用关键字
    del user_list['qiqi']
    user_list  # {'kaka': '110', 'bobo': '765', 'lulu': '119'}
    
    2.pop弹出
    user_list.pop('bobo')  # '765'  会将对应的键值弹出
    user_list  # {'kaka': '110', 'lulu': '119'}
    
    '''   当键不存在的时候,程序会报错,两种方式都会
    >>> del user_list['bobo']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'ksd'
    '''
    
  6. 统计字典中键值对个数 —— len

    user_list = {'kaka': '110', 'lulu': '119'}
    len(user_list)  # 2
    
  7. 字典三剑客

    user_list = {'kaka': '110', 'qiqi': '111', 'bobo': '765', 'lulu': '119'}
    - 拿到所有键 —— keys()
    	user_list.keys()  # dict_keys(['kaka', 'qiqi', 'bobo', 'lulu'])
    - 拿到所有值 —— values() 也是用字典直接取到值的唯一方法
    	user_list.values()  # dict_values(['110', '111', '765', '119'])
    - 拿到所有键值对 —— items()
    	user_list.items()  # dict_items([('kaka', '110'), ('qiqi', '111'), ('bobo', '765'), ('lulu', '119')])
    

补充说明(使用频率低)

  1. 快速生成有默认值的字典 —— fromkeys
    dict.fromkeys(['name', 'age', 'gender', 'job'], 'default')
    # {'name': 'default', 'age': 'default', 'gender': 'default', 'job': 'default'}
    # 将一个列表之类的遍历一遍,作为键生成一个字典
    
    - 特殊例子,默认值是可变类型(面试题)
        user = dict.fromkeys(['name', 'age', 'gender', 'job'], [])
        # {'name': [], 'age': [], 'gender': [], 'job': []}
        user.get('name').append('leethon')
        user.get('age').append('age')
        user.get('gender').append('male')
        #  {'name': ['leethon', 'age', 'male'], 'age': ['leethon', 'age', 'male'], 'gender': ['leethon', 'age', 'male'], 'job': ['leethon', 'age', 'male']}
        """
        发现:默认值为可变类型,它们在改变时,值变化,内存地址不变,所以而每一个键后面的列表设置时就是同一个地址的列表,所以会同步变化
        """
    
  2. 添加键值对 —— setdefault
    # 当键存在时不操作,当键不存在时新增键值对
    user_list = {'kaka': '110', 'lulu': '119'}
    user_list.setdefault('kaka', '120')
    user_list  # {'kaka': '110', 'lulu': '119'}  # 没有变化
    user_list.setdefault('bobo','120')
    user_list  # {'kaka': '110', 'lulu': '119', 'bobo': '120'}  # 添加了新的键值对
    
  3. 弹出键值对
    # 接上文
    user_list.popitem()  # ('bobo', '120')
    # 遵循后进先出(LIFO),最后添加入字典的键值对,最先弹出
    

元组

类型转换

tuple()
# 可以转换可遍历的数字类型

常见操作

  1. 索引取值

    classes = ('1班', '2班', '3班', '4班', '5班', '6班', '7班')
    classes[1]  # '2班'
    
  2. 切片操作

    classes[1:5]  # ('2班', '3班', '4班', '5班')
    classes[-1:3:-2]  #  ('7班', '5班')
    # 同样也是那一套切片的逻辑
    # 切片产生的数据是元组类型的
    
  3. 统计元组元素个数

    len(classes)  # 7
    
  4. 统计元组内某个数据值的出现次数

    t1 = (1, 2, 3, 2, 2, 3, 2, 1, 2)
    t1.count(2)  # 5
    
  5. 得到元组指定数据值的索引值

    t1.index(2)   # 1
    
  6. 注意事项

    1.元组内如果只有一个元素,那么逗号不能少
    2.元组内索引绑定内存地址不能修改
    3.元组不能新增或删除类型
    

集合

集合的应用场景只有

  • 去重
  • 关系运算

去重(类型转换)

t1 = (1, 2, 3, 2, 2, 3, 2, 1, 2)
s1 = set(t1)  # 集合不存在重复的元素的特点让它具备去重的功能
t1 = tuple(s1)
t1  # (1, 2, 3)

关系运算

pro1 = {'python', 'go', 'javascript', 'c'}
pro2 = {'java', 'python', 'javascript', 'PHP'}
pro1 &  pro2  # 交集
pro1 - pro2  # pro1独有的
pro2 - pro1  # pro2独有的
pro1 |  pro2  # 并集
pro1 ^  pro2  # 各自独有的
pro1 >  pro2  # 判断包含
pro1 <  pro2  # 判断被包含
# 运行结果
>>> pro1 &  pro2  # 交集
{'python', 'javascript'}
>>> pro1 - pro2  # pro1独有的
{'go', 'c'}
>>> pro2 - pro1  # pro2独有的
{'java', 'PHP'}
>>> pro1 |  pro2  # 并集
{'java', 'c', 'javascript', 'go', 'python', 'PHP'}
>>> pro1 ^  pro2  # 各自独有的
{'java', 'c', 'go', 'PHP'}
>>> pro1 >  pro2  # 判断包含
False
>>> pro1 <  pro2  # 判断被包含
False
练习1
# 1.优化员工管理系统
#   拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
staff = {
    'jason': '123',
    'kevin': '123',
    'leethon': '123',
    'hunk': '123'
}
while True:
    # 展示功能,并要求输入
    order = input("""请选择功能:
    0:退出
    1:添加用户名
    2:查看所有用户
    3:删除指定用户名
    """)
    # 如果输入了功能以外的字符,则要求重新输入
    if order not in ['1', '2', '3', '0']:
        print('请输入有效代码')
        continue
    # 添加用户名功能
    if order == '1':
        username, inp_pwd = [
            input('请输入用户名:').strip(),
            input('请输入密码:').strip()
        ]
        staff.setdefault(username, inp_pwd)
    # 查看所有人功能
    elif order == '2':
        for member in staff.keys():
            print(member)
    # 注销账户功能
    elif order == '3':
        del_number = input('你要删除的用户名是:')
        if del_number in staff:
            del staff[del_number]

    # 退出程序的出口
    else:
        print('你已经退出程序')
        break
练习2
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
l2 = []
for i in l1:
    if i in l2:
        continue
    l2.append(i)
l1 = l2
print(l1)
练习3
# 3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
# 2. 求出所有报名的学生名字集合
# 3. 求出只报名python课程的学员名字
# 4. 求出没有同时这两门课程的学员名字集合
print(pythons & linuxs)  # {'gangdan'}
print(pythons | linuxs)  # {'kermit', 'gangdan', 'tony', 'biubiu', 'kevin', 'oscar', 'ricky', 'jason'}
print(pythons - linuxs)  # {'kevin', 'ricky', 'oscar', 'biubiu', 'jason'}
print(pythons ^ linuxs)  # {'kermit', 'tony', 'kevin', 'ricky', 'oscar', 'biubiu', 'jason'}
练习4
# 4.统计列表中每个数据值出现的次数并组织成字典展示
#  eg: l1 = ['jason','jason','kevin','oscar']
#       结果:{'jason':2,'kevin':1,'oscar':1}
#  真实数据
#      l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']

l1 = ['jason', 'jason', 'kevin', 'oscar', 'kevin', 'tony', 'kevin']
l1_count = dict.fromkeys(set(l1), 0)
for key in l1_count:
    l1_count[key] = l1.count(key)
print(l1_count)

标签:常用,内置,kaka,数据类型,list,pro2,pro1,user,l1
From: https://www.cnblogs.com/Leethon-lizhilog/p/16745575.html

相关文章

  • 数据类型的内置方法及字符编码理论
    数据类型的内置方法及字符编码理论一、内置方法之字典相关操作1.类型转换dict()字典的转换一般不使用关键字,而是自己动手转2.字典必须掌握的操作user_dict={......
  • mogodb常用操作
    db.ttl.insert({_id:12,type:"misc",item:"card",qty:15,"createAt":newDate(Date.now()),"expireAt":newDate(Date.now())})db.ttl.insert({_id:12,......
  • 数据类型之内置方法2
    目录字典相关操作元祖相关操作集合相关操作字符编码理论字符编码实操字典相关操作元祖相关操作集合相关操作字符编码理论字符编码实操......
  • linux常用命令
    系统信息动态观察cpu、内存,进程情况:top格式:top[选项]选项:-dnumber:每隔多少秒更新一次,默认5-p:指定pid交互:P:按CPU使用率排序......
  • 常用css样式
    一、文本样式1、常用的text-decoration:underline;下划线text-decoration:line-through;横贯线text-decoration:underlinewavyred;下划线是红色的波浪lett......
  • 【C语言基础】C语言数据类型及数据对齐
    前言code#include<stdio.h>#include<stdlib.h>#defineSize5typedefstructTable{charlength;charsize;charss;intlen;}table;tabl......
  • 工业互联网平台的数据类型及特点是什么?
    工业互联网产业联盟(AII)对工业互联网是这样定义的,分为宏观层面和技术层面:•从宏观层面看,工业互联网通过工业经济全要素、全产业链、全价值链的全面连接,支撑制造业数字化、......
  • 常用缺省源
    顺便推销一下cnblog。\(\texttt{update}2022/9/23\):将48(ASCII'0'=48)换成了0x30。真高级!\(\texttt{update}2022/9/30\):才学会了fread()优化快读(原因是因为Ynoi......
  • 数车常用的断屑方法
    一、利用材料变形进行断屑1、利用断屑槽断屑槽不仅对切屑起附加变形的作用,而且还能实现控制切屑的卷曲与折断。只要断屑槽的形状、尺寸及断屑槽与主切削刃的倾斜角合适,断屑......
  • 铣削加工常用的四种刀具及差别
    1、平铣刀(圆柱形铣刀)平铣刀为卧式铣床上加工平面最常用之刀具,平铣刀为圆盘型或圆柱型,外圆周上有刀齿,用于铣削与刀轴平行之平面,平铣刀的刀刃有直刃形,与螺旋刃形,一般以螺旋刃......