Python基础知识-pycharm版-字典dict与集合set

day 4

字典

字典必须是键值对:key: value pairs
字典无序!!!
key不可变,不能为列表等可变对象

create a dict

4 ways:

>>> a = {"name": 'Yuan Gao', 'age': 23}
>>> a
{'name': 'Yuan Gao', 'age': 23}

>>> b = dict([('name', 'Yuan Gao'), ('age', 23)])
>>> b
{'name': 'Yuan Gao', 'age': 23}

>>> c = dict( name = 'Yuan Gao', age = 23)
>>> c
{'name': 'Yuan Gao', 'age': 23}

# 注意是dictttttt!
>>> d = ['name', 'age']
>>> e = ['Yuan Gao', 23]
>>> f = dict(zip(d,e))
>>> f
{'name': 'Yuan Gao', 'age': 23}

# 创建值为空的字典
第一种: dict2 = {}
第二种: dict2 = dict()
>>> h = dict.fromkeys(['name', 'age'])
>>> h
{'name': None, 'age': None}

访问与遍历

>>> a = {"name": 'Yuan Gao', 'age': 23}
>>> a['name'] # key存在则返回value,不存在则报错
'Yuan Gao'

# get函数: xxx.get(key, 默认值),如当前查找的key不存在则返回第二个参数即默认值,如果省略第二个参数,则返回None。
>>> a.get('job') # if there is not key named 'job' then return 'not exist'
'not exsit'
>>> a.get('job',404) # if there is not key named 'job' then return 'not exist'
404

# 遍历
>>> a.items() # 遍历
dict_items([('name', 'Yuan Gao'), ('age', 23)]) # 返回所有的键值对
>>> a.keys() # 所有keys
dict_keys(['name', 'age']) #返回左右的keys
>>> a.values()
dict_values(['Yuan Gao', 23]) # 返回所有的values
>>> len(a) # number of key:value pairs
2
>>> 'name' in a # only for keys!!! 
True
>>> 'Yuan Gao' in a
False

查找values可以用 ‘Yuan Gao’ in a.values()

添加与删除

新增或修改:
dict1['key'] = 'value'

>>> b = dict([('job','student')])
>>> a.update(b)
>>> a
{'name': 'Yuan Gao', 'age': 23, 'job': 'student'}

删除指定键值对 del dict1['key'],key不存在则报错
>>> del(a['age'])
>>> a
{'name': 'Yuan Gao', 'job': 'student'}
>>> c = a.pop('name')
>>> c
'Yuan Gao' # 返回对应值对象
>>> a.clear()
>>> a
{} # delete all

popitem 随机删除
请添加图片描述

序列解包

>>> x,y,z = 1,2,3
>>> x
1
>>> [a,b,c] = [5,6,7]
>>> b
6

>>> s = {"name": 'Yuan Gao', 'age': 23}
>>> e,f = s
>>> f
'age'
>>> g,h = s.values()
>>> g
'Yuan Gao'
>>> m,n = s.items()
>>> m
('name', 'Yuan Gao')
>>> m[1]
'Yuan Gao'

字典的循环遍历

for value in dict.values():
	print(value)
	
将得到的数据进行拆包
for key,value in dict1.items():
	print(f'{key} = {value}')

请添加图片描述
请添加图片描述

集合

不可重复!
集合也没有顺序,和dict一样,所以不像列表一样,集合没有下标

空集set()
不能用{},{}只能创建空字典

创建集合:
>>> s3 = set('adehiuf')
>>> print(s3)
{'h', 'e', 'i', 'u', 'f', 'a', 'd'}

集合增加数据:
xxx.add()
xxx.update()

>>> a = {3,5,7}
>>> a
{3, 5, 7}
# 集合增加数据,只能增加一个数据
# 如果增加已经有的数据,则不做任何的新数据到原集合
>>> a.add(9) # 增加到任意位置
>>> a
{9, 3, 5, 7}
# 如果要增加序列,则用xxx.update()
>>>a = {3,5,7}
>>>a.update([10, 20, 30])
>>>print(a)
{3, 5, 7, 10, 20, 30}

# 将列表变为集合
>>> b = [1,2,8]
>>> c = set(b)
>>> c
{8, 1, 2}

删除数据
# 删除 xxx.remove() / xxx.discard(),用法一样,但是discard不报错如果数据不存在,remove则报错
>>> c.remove(2)
>>> c
{8, 1}
随机删除1个数据:
xxx.pop()

>>> clear(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'clear' is not defined
>>> c
{8, 1}
>>> c.clear()
>>> c
set()

判断数据是否存在:
in
not in
返回True or False

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值