2.4 集合和字典

集合

定义

  • 集合本身是一个可变类型
  • 无序无重复。
  • 集合的元素必须是不可变类型。
  • 空集合变量只能通过构造函数来创建。
  • 集合中元素是无序的,所以不能通过索引访问。

常规操作

集合增删,add,remove。

集合运算:并集union()或者‘|’;交集intersection()或者‘&’;差集difference或则‘-’;

其他集合操作:

还有一种集合:frozenset,除了不能增加和删除元素外,其他功能和set类似。

代码示例

集合创建

set1 = set((6,7,8))
set2 = {(4,5),"hello", 5}
print(set1)
print(set2)
结果:
{8, 6, 7}
{(4, 5), 5, 'hello'}

添加删除元素

set1 = set((6,7,8,9))
set2 = {(4,5),"hello", 5}

set2.add('world')
set1.remove(7)
print(set1)
print(set1.pop())
print(set1)
print(set2.discard(12))

print(set2)
结果:
{8, 9, 6}
8
{9, 6}
None
{(4, 5), 'world', 'hello', 5}

集合运算

set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}

print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
结果:
{(4, 5), 5, 6, 7, 8, 9, 'hello'}
{5}
{8, 9, 6, 7}
set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}

print(set1.difference(set2))
print(set1.difference_update(set2))
print(set1)
结果:
{8, 9, 6, 7}
None
{6, 7, 8, 9}
set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}
set3 = {(4,5),10,12}

print(set1.intersection_update(set2,set3))
print(set1)
结果:
None
set()
set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}

print(set1.union(set2))
print(set1)
结果:
{(4, 5), 5, 6, 7, 8, 9, 'hello'}
{5, 6, 7, 8, 9}

更新集合

set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}

print(set1.update(set2))
print(set1)
print(set1.update("world"))
print(set1)
print(set1.update([12,12,35]))
print(set1)
结果:
None
{5, 6, 7, 8, 9, (4, 5), 'hello'}
None
{'w', 5, 6, 7, 8, 9, 'o', 'd', 'r', (4, 5), 'l', 'hello'}
None
{'w', 35, 5, 6, 7, 8, 9, 'o', 'd', 12, 'r', (4, 5), 'l', 'hello'}

对称差集

和交集刚好相反

set1 = set((5,6,7,8,9))
set2 = {(4,5),"hello", 5}


print(set1.symmetric_difference(set2))
print(set1)
结果:
{'hello', 6, 7, 8, 9, (4, 5)}
{5, 6, 7, 8, 9}

字典

定义

可变容器类型,可以存储任意类型的对象,无序容器。

常用字典操作:

代码示例

字典创建

dict1 = dict({'name':'bruce'})
dict2 = {'name':'bruce','age':23}
dict3 = dict1.fromkeys(["age","salary"],25)
print(dict1)
print(dict2)
print(dict3)

结果:
{'name': 'bruce'}
{'name': 'bruce', 'age': 23}
{'age': 25, 'salary': 25}
添加

添加

dict1 = dict({'name':'bruce'})
dict1["age"] = 35
dict1['salary'] = 1000
print(dict1)

读取

dict1 = dict({'name':'bruce'})
dict1["age"] = 35
dict1['salary'] = 1000
print(dict1)
print(dict1['name'])
print(dict1.get('name'))
结果:
{'name': 'bruce', 'age': 35, 'salary': 1000}
bruce
bruce

更新

dict1 = dict({'name':'bruce'})

dict1.update({'age':25,"salary":1000})
print(dict1)
结果:
{'name': 'bruce', 'age': 25, 'salary': 1000}

遍历

dict1 = dict({'name':'bruce'})

dict1.update({'age':25,"salary":1000})
for key in dict1.keys():
    print("{}:{}".format(key,dict1[key]))
结果:
name:bruce
age:25
salary:1000 
dict1.update({'age':25,"salary":1000})
for d in dict1.items():
    print("{}".format(d))
结果:  #d是元组类型
('name', 'bruce')
('age', 25)
('salary', 1000) 

删除

dict1 = dict({'name':'bruce'})

dict1.update({'age':25,"salary":1000})
print(dict1.popitem())
print(dict1.pop('name'))
结果 :
('salary', 1000)
bruce

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi程序小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值