python基础学习日志四

字典

字典类型

字典是根据一个信息查找另一个信息的方式构成的"键值对",它表示索引用的键和对应的值构成的成对关系。

局部说明防止搞混

1、元组的符号:() 序列的符号:[] 字典的符号:{}
2、有序:序列 无序:元组,字典 !为什么输出字典是有序是因为3.6版本对输出做了调整
3、可以增减删等操作:序列,字典 不可以增减删操作:元组

创建方式

第一种使用{}直接创建字典

d={key1:value1,key2:value2…}

print('-'*20,'第一种','-'*20)
d={'a':1,'b':2,'c':3}
print(d,type(d))

输出结果

-------------------- 第一种 --------------------
{'a': 1, 'b': 2, 'c': 3} <class 'dict'>

第二种使用内置函数dice()创建字典

zip(lst1,lst2)

a='world'
a=list(a)
print(a)
b=[b for b in range(1,7)]
print(b)
c=zip(a,b)
print(c)
c=tuple(c)
print(c)
d=dict(c)
print(d)

输出结果

['w', 'o', 'r', 'l', 'd']
[1, 2, 3, 4, 5, 6]
<zip object at 0x000002AC66945980>
(('w', 1), ('o', 2), ('r', 3), ('l', 4), ('d', 5))
{'w': 1, 'o': 2, 'r': 3, 'l': 4, 'd': 5}

特殊操作办法

a=dict(cat=20,dog=30,fish=10)
print(a,type(a))
a.update(laohu=10)
print(a,type(a))
print('max',max(a))
print('min',min(a))
print('len',len(a))
del a
print(a)

输出结果

{'cat': 20, 'dog': 30, 'fish': 10} <class 'dict'>
{'cat': 20, 'dog': 30, 'fish': 10, 'laohu': 10} <class 'dict'>
max laohu
min cat
len 4
报错

字典的访问和遍历

字典元素的取值,或者叫访问

d[key]或d.get(key)

print('-'*20,'访问','-'*20)
d=dict(nihao=10,wohao=20,tabuhao=30)
print(d['nihao'])
print(d.get('nihao'))

print('-'*20,'区别','-'*20)
# print(d['hao'])           //报错
print(d.get('hao'))
print(d.get('hao'),'qu')
print(d.get('nihao'),'qu')

输出结果

-------------------- 访问 --------------------
10
10
-------------------- 区别 --------------------
None
None qu
10 qu

字典元素的遍历:

1)遍历出key与value的元组

for element in d.items():

pass

print('-'*20,'字典遍历第一种','-'*20)
d=dict(nihao=10,wohao=20,tabuhao=30)
for i in d.items():
    print(i)

输出结果

-------------------- 字典遍历第一种 --------------------
('nihao', 10)
('wohao', 20)
('tabuhao', 30)

2)分别遍历出key和value

for key,value in d.items():

pass

print('-'*20,'字典遍历第二种','-'*20)
d=dict(nihao=10,wohao=20,tabuhao=30) 
for a,b in d.items():
    print(a,'--',b) 

输出结果

-------------------- 字典遍历第二种 --------------------
nihao -- 10
wohao -- 20
tabuhao -- 30

字典特殊操作

字典的方法描述说明
d[‘fish’]=300添加key为fish,值为300的数
d.keys()获取所有key数据
d.values()获取所有value数据
d.pop(key,default)key存在获取相应的value,同时删除key-value对,否则获取默认值
d.popitem()随机删除一对键值对
d.clear清空所有key-value
print('-'*20,'字典操作','-'*20)
d=dict(dog=100,tiger=200,zoo=399)
print(d)
d['fish']=300
print(d)
print(d.keys())
keys=tuple(d.keys())
print(keys)
values=tuple(d.values())
print(values)
pop=d.popitem()
print(pop)
print(d)
print(d.pop('nihao','my'))
print(d.pop('zoo','my'))
print(d)
d.clear()
print(d)

输出结果

-------------------- 字典操作 --------------------
{'dog': 100, 'tiger': 200, 'zoo': 399}
{'dog': 100, 'tiger': 200, 'zoo': 399, 'fish': 300}
dict_keys(['dog', 'tiger', 'zoo', 'fish'])
('dog', 'tiger', 'zoo', 'fish')
(100, 200, 399, 300)
('fish', 300)
{'dog': 100, 'tiger': 200, 'zoo': 399}
my
399
{'dog': 100, 'tiger': 200}
{}

字典的生成式

d={key:value for item in range}

print('-'*20,'字典生成式','-'*20)
import random
d={item:random.randint(1,100) for item in range(4)}
print(d)

输出结果

-------------------- 字典生成式 --------------------
{0: 89, 1: 75, 2: 38, 3: 10}

d={key:value for key,value in zip (lst1,lst2)}

lst=[1001,1002,1003]
lst2=['dawd','sadw','asdw']
d={key:value for key,value in zip(lst,lst2)}
print(d)

输出结果

{1001: 'dawd', 1002: 'sadw', 1003: 'asdw'}

集合

概念

1、集合与数学中集合的概念一致
2、是一个无序的不重复的元素序列
3、集合中只能存储不可变数据类型
4、在python中集合使用{}定义
5、与列表、字典一样,都是python中的可变数据类型
6、符号为{}

创建的方式

1)使用{}直接创建集合

语法结构如下:

s={element1,element2,…elementN}

s={1,2,3,4,5,6,3,5}
print(s,type(s))
b={}
print(b,type(b))

输出结果

{1, 2, 3, 4, 5, 6} <class 'set'>
{} <class 'dict'>

2)使用内置函数set()创建集合

语法结构如下:

s=set(对象) //记住,重复的会去掉的

s=set()
print(s,type(s),bool(s))
s=set('worlood')
print(s)

输出结果

set() <class 'set'> False
{'o', 'r', 'w', 'd', 'l'}
只能存储不可变数据类型
s=set([10,20],[30,40])
print(s)

输出结果				//只能存储不可变数据类型

----> 1 s=set([10,20],[30,40])
      2 print(s)

TypeError: set expected at most 1 argument, got 2
与序列的操作差不多系统
s=set([10,20,30,40])
print(s)
print(max(s))
print(min(s))
print('有没有\'10\'这个数字:',10 in s)
print('没有\'10\'这个数字:',10 not in s)

输出结果

{40, 10, 20, 30}
40
10
有没有'10'这个数字: True
没有'10'这个数字: False

集合的删除

del 集合名

s=set([10,20,30,40])
print(s)
del s 
print(s)

输出结果

{40, 10, 20, 30}
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
集合.py:24
     22 print(s)
     23 del s 
---> 24 print(s)

集合的操作符,方法及遍历

操作符

交集&

#交集
A={10,30,20,40,55}
B={30,10,44,66,40}
print(A&B)

输出结果

{40, 10, 30}

并集|

#并集
A={10,30,20,40,55}
B={30,10,44,66,40}
print(A|B)

输出结果

{66, 40, 10, 44, 20, 55, 30}

差集-

A去掉B相交部分输出A

#差集
A={10,30,20,40,55}
B={30,10,44,66,40}
print(A-B)

输出结果

{20, 55}

补集^

去掉交集部分全部输出

#补集
A={10,30,20,40,55}
B={30,10,44,66,40}
print(A^B)

输出结果

{66, 20, 55, 44}

相关操作

集合的方法描述说明
s.add(x)没x就添加x到集合s
s.remove(x)如果有x则删除,没有就报错
s.clear()清空元素
print('-'*20,'相关操作','-'*20)
A={10,30,20,40,55}
print(A)
A.add(99)
print(A)
A.remove(99)
print(A)
A.clear()
print(A)

输出结果

{20, 55, 40, 10, 30}
{99, 20, 55, 40, 10, 30}
{20, 55, 40, 10, 30}
set()

遍历

print('-'*20,'遍历','-'*20)
s={i for i in range(9)}
print(s)

for a,b in enumerate(s,start=1):
    print(a,'-->',b)


s={i for i in range(9) if i%2==0}
print(s)

    输出结果
    
-------------------- 遍历 --------------------
{0, 1, 2, 3, 4, 5, 6, 7, 8}
1 --> 0
2 --> 1
3 --> 2
4 --> 3
5 --> 4
6 --> 5
7 --> 6
8 --> 7
9 --> 8
{0, 2, 4, 6, 8}

复习

区别

数据类型序列类型元素是否可重复是否有序定义符号
列表list可变序列可重复有序[]
元组tuple不可变序列可重复有序()
字典dict可变序列Key不可重复
Value可重复
无序{key:value}
集合set可变序列不可重复无序{}

合并字典

a={'a':10 ,'b':30}
c={'f':30,'e':99}
print(a|c)

输出结果

{'a': 10, 'b': 30, 'f': 30, 'e': 99}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值