zoukankan      html  css  js  c++  java
  • 字典,集合的内置方法

    字典的内置方法

    作用

    • 当列表中有很多值的时候,就会显得很乱,所以有了字典

    定义方式

    • '{}'内以逗号分隔开多个键值对key:value的值,key一般为字符串,对值具有描述意义,value可以是任意数据类型的值
    myself_dict = {'name': 'lj', 'age': 21, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le'],}
    d1 = {}
    d2 = dict()
    
    # 看得懂就可以,不要用这个写
    d = dict(name='lj', age=21, weight=130)
    

    方法

    优先掌握

    1.按key存取值, 可存可取

    print(myself_dict['name'])
    myself_dict['age'] -= 1
    print(myself_dict)
    

    lj
    {'name': 'lj', 'age': 20, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le']}

    2.长度len

    • 一个键值对是一个长度
    print(len(myself_dict))
    

    4

    3.成员运算, in 和 not in

    • 比较的是键而不是值
    print('name' in myself_dict)
    print('lj' in myself_dict)
    

    True

    False

    4.删除 del

    • 参数填键,不填会报错,找不到也会报错
    • 和pop的区别是del可以删除整个变量
    del myself_dict['weight']
    print(myself_dict)
    

    {'name': 'lj', 'age': 20, 'hobby_list': ['chi', 'he', 'wan', 'le']}

    5.删除 pop

    • 参数填键,不填会报错,找不到也会报错
    myself_dict.pop('age')
    print(myself_dict)
    

    {'name': 'lj', 'hobby_list': ['chi', 'he', 'wan', 'le']}

    6.keys & values & items

    • 返回的值类似于列表,但不是列表,以后再讲
    print(myself_dict.keys())
    print(myself_dict.values())
    print(myself_dict.items())
    

    dict_keys(['name', 'hobby_list'])
    dict_values(['lj', ['chi', 'he', 'wan', 'le']])
    dict_items([('name', 'lj'), ('hobby_list', ['chi', 'he', 'wan', 'le'])])

    7.for 循环

    for i in myself_dict:
        print(i)
    print()
    for i in myself_dict.keys():
        print(i)
    print()
    for y in myself_dict.values():
        print(y)
    print()
    for i in myself_dict.items():
        print(i)
    print()
    for i, y in myself_dict.items():
        print(i, y)
    print()
    

    name
    hobby_list

    name
    hobby_list

    lj
    ['chi', 'he', 'wan', 'le']

    ('name', 'lj')
    ('hobby_list', ['chi', 'he', 'wan', 'le'])

    name lj
    hobby_list ['chi', 'he', 'wan', 'le']

    需要掌握

    1.get

    • 和直接用键取值的区别在于: 如果键不存在,不会报错,默认返回None,可以设定返回值
    print(myself_dict.get('name'))
    print(myself_dict.get('asda'))
    print(myself_dict.get('asda', 123))
    

    lj
    None
    123

    2.update

    • 将update中的字典更新到原字典中,有就更新,没有就添加
    • update中必须是一个字典
    one_dict = {'one': 1}
    myself_dict.update(one_dict)
    myself_dict.update({'name': 'ljl'})
    
    print(myself_dict)
    

    {'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1}

    3.fromkeys

    • 无视方法前面的字典内容,把给定列表内的元素取出来当成key,然后使用同一个value新建一个字典
    from_dict1 = dict.fromkeys([1, 2, 3], 'num')
    from_dict2 = myself_dict.fromkeys([1, 2, 3], 'num')
    print(from_dict1)
    print(from_dict2)
    

    {1: 'num', 2: 'num', 3: 'num'}
    {1: 'num', 2: 'num', 3: 'num'}

    4.setdefault

    • 如果字典中有该key的话,则该key对应的值不变,如果没有,就添加一个
    • 和update()区别在于只能参数是填写键和值(值默认是None),不能填写一个字典进去.
    myself_dict.setdefault('a', 1)
    myself_dict.setdefault('name', 'lj')
    print(myself_dict)
    

    {'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1, 'a': 1}

    存储一个值or多个值

    • 多个值

    有序or无序

    • 无序

    可变or不可变

    • 可变

      注意:字典的键是惟一的,但值不是惟一的,所以大多的方法都是使用键作为参数

    集合的内置方法

    作用

    • 储存多个值

    定义方式

    • '{}'内以逗号隔开多个元素,元素的类型必须可哈希(不可变类型)
    num_set = {1, 2, 3, 'a'}
    
    # 创建空集合的方式,不要用{},那是dict
    emp_set = set()
    

    方法

    1.去重 & 乱序

    • 集合内的元素具有唯一性,并且是无序的
    • 自己的猜想:集合内的元素可能并不是完全无序的,因为相同数据的打印结果是相同的.所以可能只是按照程序内部的规则来进行排序
    num_set = {3, 2, 3, 2, 1, 'a'}
    print(num_set)
    

    {1, 2, 3, 'a'}

    2.长度len, 极值max, min

    • 极值只能在元素全是数字时进行比较
    print(len(num_set))
    

    4

    3.成员运算 in 和 not in

    print(3 in num_set)
    

    True

    4.循环

    for i in num_set:
        print(i)
    

    1
    2
    3
    a

    5.并集 union '|'

    set1 = {1, 2, 3}
    set2 = {2, 3, 4}
    print(set1 | set2)
    print(set1.union(set2))
    
    {1, 2, 3, 4}
    {1, 2, 3, 4}
    

    6.交集 intersection '&'

    print(set1 & set2)
    print(set1.intersection(set2))
    
    {2, 3}
    {2, 3}
    

    7.差集 difference '-'

    print(set1 - set2)
    print(set1.difference(set2))
    
    {2, 3}
    {2, 3}
    

    8.对称差集 symmetric_difference '^'

    print(set1 ^ set2)
    print(set1.symmetric_difference(set2))
    
    {1, 4}
    {1, 4}
    

    9.父集 issuperset '>' ">="

    print(set1 > set2)
    print(set1.issuperset(set2))
    
    False
    False
    

    10.子集 issubset '<' '<='

    print(set1 < set2)
    print(set1.issubset(set2))
    
    False
    False
    

    11.add

    set1.add(5)
    print(set1)
    
    {1, 2, 3, 5}
    

    12.remove

    set1.remove(5)
    print(set1)
    
    {1, 2, 3}
    

    13.difference_update

    • 从这个集合中另一个集合中有的所有元素
    set1.difference_update(set2)
    print(set1)
    
    {1}
    

    14.discard

    • 和remove的区别在于如果值不存在则返回None,不会报错
    print(set1.discard(2))
    
    None
    

    15.isdisjoint

    • 如果两个集合的交集为空,返回True
    print(set1.isdisjoint(set2))
    

    True

    16.clear & copy

    • clear只是清空元素,不删除地址
    • copy浅拷贝

    存储一个值or多个值

    • 多个值

    有序or无序

    无序

    可变or不可变

    可变

    冰冻集合

    1. 冰冻集合就是不可以进行任何修改的集合
    2. frozenset也是一个特殊的集合类型
    3. 除了不能修改外,拥有集合的所有特性
    # 创建
    fs = frozenset()
    print(type(s))
    print(s)
    
    <class 'frozenset'>
    frozenset()
    
  • 相关阅读:
    【小程序】请求与封装
    【小程序】生命周期
    【小程序】项目结构
    【笔记】vue-cli 开发环境中跨域连接后台api(vue-resource 跨域post 请求)
    【笔记】npm 安装 vue-cli
    【笔记】css 实现宽度自适应屏幕 高度自适应宽度
    【笔记】css 1像素边框
    【笔记】让360浏览器用chrome 内核渲染你的网页
    【实践】require.js + r.js 代码打包压缩初体验
    【笔记】学校项目开发中所了解的一些浏览器之间的差异
  • 原文地址:https://www.cnblogs.com/lucky75/p/10920354.html
Copyright © 2011-2022 走看看