开发者

python--字典(dict)和集合(set)详解

开发者 https://www.devze.com 2022-11-30 13:34 出处:网络 作者: 带你去网吧里偷耳机
目录一、集合1.集合定义2.创建集合3.去重4.集合增删5.关系运算6.排序7.frozenset8.练习9.特性二、字典1.字典定义2.字典打印3.字典元素删除4.setdefault5.defau...
目录
  • 一、集合
    • 1.集合定义
    • 2.创建集合
    • 3.去重
    • 4.集合增删
    • 5.关系运算
    • 6.排序
    • 7.frozenset
    • 8.练习
    • 9.特性
  • 二、字典
    • 1.字典定义
    • 2.字典打印
    • 3.字典元素删除
    • 4.setdefault
    • 5.defaultdict
  • 总结

    一、集合

    python--字典(dict)和集合(set)详解

    1.集合定义

    • 集合(set)是一个无序的不重复元素序列。

    2.创建集合

    • 使用大括号 { } 或者 set() 函数创建集合;
    • 创建一个空集合必须用 set() 而不是 { }
    • { } 是用来创建一个空字典。
    s = {1,2,3,4}
    print(s,type(s))
    

    python--字典(dict)和集合(set)详解

    3.去重

    s = {1,2,3,4,3,2,1}
    print(s,)
    

    python--字典(dict)和集合(set)详解

    4.集合增删

    s = {1,2,3}
    s.add(4) #单个元素
    print(s)
    s.update({4,5,6}) #多个元素
    print(s)
    s = {1,2,3,4,5,6}
    s.remove(4) #移除某个
    print(s)
    s.pop() #随机移除
    print(s)
    

    python--字典(dict)和集合(set)详解

    5.关系运算

    s1 = {1,2,3}
    s2 = {1,2,4}
    print(s1 - s2)
    print(s1 & s2)
    print(s1 ^ s2)
    print(s1 | s2)
    

    python--字典(dict)和集合(set)详解

    6.排序

    s = {1,6,3,8,5}
    print(sorted(s))
    

    7.frozenset

    • frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。
    • frozenset 的这些方法和 set 集合同名方法的功能完全相同。frozenset 的作用主要有两点:

    当集合元素不需要改变时,使用 frozenset 代替 set 更安全。

    当某些 API 需要不可变对象时,必须用 fr编程客栈ozenset 代替set。比如 dict 的 key 必须是不可变对象,因此只能用 frozenset;再比如 set 本身的集合元素必须是不可变的,因此 set 不能包含 set,set 只能包含 frozenset。

    s = frozenset({1,2,3})
    print(s, type(s))
    

    python--字典(dict)和集合(set)详解

    8.练习

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从大到小排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

    import random
    s = set()
    n = int(input("the count:"))
    for i in range(n):
        s.add(random.randint(1,1000))
    print(sorted(s,reverse=True))
    

    9.特性

    • 不支持连接+,重复*,检索 index,切片slice
    • 支持in,not in

    二、字典

    python--字典(dict)和集合(set)详解

    1.字典定义

    • 字典是另一种可变容器模型,且可存储任意类型对象。
    • 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

    判断字符是否在字典内,注意此处的字符为键值key的内容,而不是value

    d = {'name':'jia' , 'age':'18' , 'city':'xian'}
    print(d,type(d))
    print('name'in d)
    print('jia'in d)
    

    python--字典(dict)和集合(set)详解

    2.字典打印

    键值、value、字典打印

    d = {'name':'jia' , 'age':'18' , 'city':'xian'}
    print(d.keys())
    print(d.values())
    print(d.items())
    print(d['name'])
    print(d['age'])
    print(d['city'])
    

    python--字典(dict)和集合(set)详解

    打印value

    print(d['name'])
    print(d['age'])
    print(d['city'])
    

    python--字典(dict)和集合(set)详解

    按照字典格式,自定义键值和value,获取value

    print(d['province']) #不存在的元素会异常报错
    print(d.get('province', 'shanghai'))
    

    python--字典(dict)和集合(set)详解

    添加及修改字典内value

    d = {'name':'jia', 'age':'18'}
    d['name'] = 'zhao'
    print(d)
    d['city'] = 'xian'
    print(d)
    

    python--字典(dict)和集合(set)详解

    循环打印字典内容

    for item in d:
        print(item)
    for item in d.items():
        print(item)
    

    python--字典(dict)和集合(set)详解

    双变量循环打印字典

    fowww.cppcns.comr k,v in d.items():
        print(f'key={k},value={v}')
    

    python--字典(dict)和集合(set)详解

    3.字典元素删除

    方法一:pop()方法弹出指定元素

    d = {'name':'jia' , 'age':'18' , 'city':'xian'}
    d.pop('name')
    print(d)
    

    方法二:del()方法删除指定元素:

    d = {'name':'jia' , 'age':'18' , 'city':'xian'}
    # d.pop('name')
    del d['age']
    print(d)
    

    python--字典(dict)和集合(set)详解

    4.setdefault

    设置键值默认为指定valwnknQVTue,当默认value被指定后,不会再改变

    d = {'name':'jia' , 'age':'18' , 'city':'xian'}
    d.setdefault('city','luoyang')
    print(d)
    d.setdefault('city','beijing')
    print(d)
    

    python--字典(dict)和集合(set)详解

    5.defaultdict

    • collections.defaultdict类,本身提供了默认值的功能, 默认值可以是整形,列表,集合等.
    • defaultdict 是 dict 的子类。但它与 dict 最大的区别在于,如果程序试图根据不存在的 key 访问 value,会引发 KeyError 异常;而 defaultdict 提供default_factory 属性,该为不存在的 key 来自动生成生成默认的 value。

    需求:

    我们想要一个能将键(key)映射到多个值的字(即所谓的一键多值字典)

    解决方案:

    1). 字典是一种关联容器,每个键编程客栈都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。

    2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.

    from collections imporhttp://www.cppcns.comt defaultdict
    d = defaultdict(int)
    d['num'] += 1
    print(d)
    d = defaultdict(list)
    d['hosts'].append('host1')
    print(d)
    d = defaultdict(set)
    d['media'].add('demo')
    print(d)
    

    python--字典(dict)和集合(set)详解

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号