Python基础_06:字典和集合

字典(dictionary)

基本概念

  • 以花括号{}表示,字典是无序的
  • 通过键访问,值可以是任何数据类型
  • 使用键值对存储数据
    • 键 key 是索引
    • key不可重复,如果重复后面的会覆盖前面的key
    • 值 value 是数据
    • 键和值直接用:表示
    • 键必须是唯一的
    • 值可以任意类型数据,但是键只能是有不可变类型

字典操作

创建字典{}或者dic()

dic = {"id": "12102200", "姓名": "Jenny", "年龄": 18}
>>> 值为:{'id': '12102200', '姓名': 'Jenny', '年龄': 18} 类型为:<class 'dict'> 
# 创建空字典
dic = {} #dic = dict()

字典取值

# 使用key取值; key不存在时会报错
dic = {"id": "12102200", "姓名": "Jenny", "年龄": 18}
print(dic["姓名"])
>>> Jenny

# 使用get方法;key不存在会返回None
result = dic.get("id") 

print(f"值为:{result},类型为{type(result)}")
>>> 值为:12102200,类型为<class 'str'>

# 如果key不存在,同时添加第二个参数,返回第二个参数
result1 = dic.get("性别", "sex")
print(f"值为:{result1},类型为{type(result1)}")
>>>值为:sex,类型为<class 'str'>

更新字典:取值更新

dic = {"id": "12102200", "姓名": "Jenny", "年龄": 18}
dic["姓名"] = "nancy"
print(dic)
>>> {'id': '12102200', '姓名': 'nancy', '年龄': 18}
# 如果key不存在,会自动创建字典元素
dic["性别"] = "男"
print(dic)
>>>{'id': '12102200', '姓名': 'nancy', '年龄': 18, '性别': '男'}

更新字典:dic.update(key)方法

# 有相同的key,值会覆盖
dic1 = {"id": "12102200", "姓名": "Jenny", "年龄": 18}
dic2 = {"性别": "男" , True: "正确", None: "空值", "ic": "1001"}
dic1.update(dic2)
print(dic1)
>>> {'id': '12102200', '姓名': 'Jenny', '年龄': 18, '性别': '男', True: '正确', None: '空值', 'ic': '1001'}

删除字典元素:dic.pop(key)

dic1 = {"id": "12102200", "姓名": "Jenny", "年龄": 18}
# 删除指定key的值,同时返回key的值
dic1.pop("id")  # del dic1["id"]
print(dic1)
>>> { "姓名": "Jenny", "年龄": 18}

清空字典:dic.clear()

dic1 = {id: "10011", "name": "Nancy", "aeg": 18}
dic1.clear()
print(dic1)
>>> {}

其他函数

dic.items()返回可遍历的元祖(键,值)数据

dic1 = {"id": "10011", "name": "Nancy", "aeg": 18}
result = dic1.items()
print(f"返回的值为:{result}, 类型为:{type(result)}")
>>> 返回的值为:dict_items([('id', '10011'), ('name', 'Nancy'), ('aeg', 18)]), 类型为:<class 'dict_items'>

dic.keys()返回一个迭代器,所有的值,可用list()转换为列表

dic1 = {"id": "10011", "name": "Nancy", "aeg": 18}
result = dic1.keys()
print(f"返回的值为:{result}, 类型为:{type(result)}")
>>> 返回的值为:dict_keys(['id', 'name', 'aeg']), 类型为:<class 'dict_keys'>

dict.valies()返回一个迭代器,所有的键,可以list()转换为列表

dic1 = {"id": "10011", "name": "Nancy", "aeg": 18}
result = dic1.values()
print(f"返回的值为:{result}, 类型为:{type(result)}")
>>> 返回的值为:dict_values(['10011', 'Nancy', 18]), 类型为:<class 'dict_values'>

dic.copy()复制字典

dic1 = {"id": "10011", "name": "Nancy", "aeg": 18}
dic2 = dic1.copy()
print(f"返回的值为:{dic2}, 类型为:{type(dic2)}")
>>> 返回的值为:{'id': '10011', 'name': 'Nancy', 'aeg': 18}, 类型为:<class 'dict'>

dic.popitem()随机删除字典中最后一对键值

dic2 = {"id": "10011", "name": "Nancy", "aeg": 18}
dic2.popitem()
print(f"返回的值为:{dic2}, 类型为:{type(dic2)}")
>>> 返回的值为:{'id': '10011', 'name': 'Nancy'}, 类型为:<class 'dict'>

dic.fromkeys()创建一个新的字典

seq = ("sex", "hobby", "weight")
dic = dict.fromkeys(seq)
print(f"返回的值为:{dic}, 类型为:{type(dic)}")
# 只有键的序列,没有对应值时,默认为None
>>> 返回的值为:{'sex': None, 'hobby': None, 'weight': None}, 类型为:<class 'dict'>
# 有值时
dic = dict.fromkeys(seq,10)
print(f"返回的值为:{dic}, 类型为:{type(dic)}")
>>> 返回的值为:{'sex': 20, 'hobby': 20, 'weight': 20}, 类型为:<class 'dict'>

dic.setdefault(key,[default])如果键不存在字典中,添加键并将值设置为default

dic1 = {"id": "10011", "name": "Nancy", "aeg": 18}
# 未设置值是,default默认为None,设置了之后,对应值为设置的值
dic1.setdefault("sex", "男")
print(dic1)
>>> {'id': '10011', 'name': 'Nancy', 'aeg': 18, 'sex': '男'}

集合(set)

基本概念

  • 使用大括号{}或者set()函数创建集合,与字典相似,但是无法通过键访问成员
  • 集合(set):
    1. 集合内元素必须是不可变类型
    2. 集合内元素无序
    3. 集合内元素不可重复
  • 使用集合可以去重,关系运算
  • len(set):获取集合长度
  • 可以求差集(-);交集(&);并集(|)

操作示例

# 集合

name1 = {"zero", "kevin", "jason", "nancy"}
name2 = {"jojy", "lusi", "jason", "nancy"}

# 1.关系运算
# 取交集
res = name1 & name2
# print(res)
print(name1.intersection(name2))
# 取并集
res1 = name1 | name2
# print(res1)
print(name1.union(name2))
# 取差集
n1 = name1 - name2
n2 = name2 - name1
# print(n1)
# print(n2)
print(name1.difference(name2))

# 取对称差集:求两个用户独有的好友(即去掉共有的好友)
# print(name1 ^ name2)
print(name1.symmetric_difference(name2))

# 父级子级:集合的比较大小,实际上是比较的包含关系
s1 = {1, 2, 3}
s2 = {1, 2}
print(s1 > s2)
print(s1.issuperset(s2))
print(s2.issubset(s1))

# 2、集合去重(局限性:只能针对不可变类型;无法保证原来的顺序)

# 3、其他内置方法

# discard()删除指定元素,删除不存在的元素不会报错,remove()删除不存在元素会报错
s = {1, 2, 3}
s.discard(3)
s.difference_update({3, 4, 5})  # 等价于s=s.difference({3, 4, 5}),求差集之后赋值
print(s)

result = s.isdisjoint({4, 5, 6})  # 两个集合完全独立,没有共同部分,返回True
print(result)
"""
s.pop() 移除元素,随机
s.add(4) 增加单个元素
s.update({7, 8, 9}) 更新集合
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值