自学Python day08-字典和集合

字典应用场景

字典是不支持下标的,数据和数据顺序没有关系,它以键值对的形式出现

创建字典

符号是大括号,字典里的数据必须是键值对 key:value,中间用逗号隔开

# {} 键值对 键值对之间用逗号分开
# 1、创建有数据的字典
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}

# print(dict1)
# print(type(dict1))

# 2、创建空字典:两种方法
dict2 = {}
print(type(dict2))


dict3 = dict()
print(type(dict3))

常见操作

因为字典是不支持下标的,所以中括号中的是key
字典序列【key】 = 值

dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}

# del 删除字典或者指定键值对
# del dict1
# print(dict1)

del dict1['name']
print(dict1)

# clear()    清空字典还会留下一个空的字典,del就把整个字典都删了

dict1.clear()
print(dict1)

和新增是一样的

key值查找

字典序列[key]:如果key存在就返回他的值,否则报错

get()

get(key,默认值):如果key不存在返回第二个参数,如果不写的话就是none

dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}

# 1、key值查找
print(dict1['name'])

# 2、函数
print(dict1.get('gender'))
print(dict1.get('id'))
keys()
value()
items()
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}

# 1、key值查找
print(dict1['name'])

# 2、函数
print(dict1.get('gender'))
print(dict1.get('id'))  # 如果key不存在就返回none
print(dict1.get('id', 'uncertain'))  # 如果key不存在就返回uncertain

print(dict1.keys())  # dict_keys(['name', 'age', 'gender'])
#                      # 查找字典中所有的key,返回可迭代对象

print(dict1.values())   # dict_values(['tom', 20, '男'])
#                      # 查找字典中所有的值,返回可迭代对象

print(dict1.items())    # dict_items([('name', 'tom'), ('age', 20), ('gender', '男')])
#                       查找字典中所有的键值对,返回可迭代对象,元组数据1是字典key,数据2是key对应的值

循环遍历

按key、value、键值对、进行遍历

集合

集合的用途

1、去重
2、关系运算:一个整体和另一个整体找关系

局限性

无法保证被去重对象的局限性,从被去重对象中取出的元素必须都为不可变类型

创建

使用{ }或者set(),要创建空集合只能set()
集合里的 数据是没有重复的,如果要求数据不能重复,就存到集合里去,如果要不能改变就存到元组中去

# 1、创建有数据的集合
s1 = {10, 20, 30, 40, 50}
print(s1)

{50, 20, 40, 10, 30}

注意:集合是没有顺序的,所以不支持下标操作
集合是有去重的功能

常见操作方法

add()、update()

s1 = {10, 20}
# add---增加单一数据到集合
# s1.add(100)
print(s1)
# add追加数据序列会报错的
# update---增加数据序列到集合
s1.update([100, 200, 300])
s1.update([100, 200, 300], [500, 600]) # 这种追加方式相当于写在一个序列中
s1.update([100])    # 数据序列只有1个也没问题

print(s1)

remove----删除指定数据,如果不存在则报错
discard----删除指定数据,如果不存在也不报错
pop----随机删除某个数据并返回这个数据

s1 = {100, 200, 10, 10, 300, 20, 500, 600}
# remove
s1.remove(10)
s1.remove(10)
print(s1)

1、remove删除不存在的数据会报错
2、即使s1中有两个10,集合自动将其合并成一个,然后再做删除,并不是第一个remove删一个,第二个remove再删一个

查找

in()、not in()
逻辑正确返回true

s1 = {100, 200, 10, 10, 300, 20, 500, 600}

print(10 in s1)

print(10 not in s1)

举例说明关系运算

交集
并集
差集:有方向,s1-s2和s2-s1是不一样的:
对称差集:把两个集合共同的东西挖掉,剩下来的:s1 ^s2
父子集:
父集:s1 >= s2,即s1包含s2
子集:s1<= s2

Python3乱码问题

加文件头:
#coding:utf-8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值