ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python基本数据类型(四)——Set(集合)、Dictionary(字典)

2021-07-30 22:59:57  阅读:178  来源: 互联网

标签:Set Dictionary s2 s1 数据类型 博客 北北 print 字典


文章目录


Set集合

无序、不重复

一个或数个形态各异的大小整体组成,构成集合的事物或对象称作元素或是成员

基本功能:进行成员关系测试和删除重复元素


一、 创建集合

使用大括号 { } 或者 set() 函数

注意:创建一个空集合必须用 set() 而不是 { }, { } 用来创建一个空字典

代码示例:

# 创建集合
a = {'1', 2, 2,'R','A','B'}
b = set('12343335')

#输出集合,不输出重复的元素,元素是无序的
print(a)  
print(b)

# 成员测试
if '1' in a :
    print('1 在集合中')
else :
    print('1 不在集合中')



'''
输出结果:
{2, 'B', 'A', 'R', '1'}
{'3', '1', '2', '4', '5'}
1 在集合中
'''

二、 集合运算符

符号运算
差集-
并集|
交集&
异或(不同时存在的元素)^

代码示例:

# 集合运算
a = set('1234567')
b = {'1','3','5','6','7','8'}
print(a)
print(b)
print('1' in a)	# 元素1是否在a中
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素



'''
输出结果:
{'1', '5', '3', '7', '4', '2', '6'}
{'1', '3', '7', '8', '6', '5'}
True
{'4', '2'}
{'1', '5', '3', '7', '4', '2', '8', '6'}
{'1', '5', '3', '7', '6'}
{'4', '2', '8'}
'''

三、 内置方法

方法描述
s.add(x)将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作
s.update( x )添加元素,参数可以是列表,元组,字典等
s.remove( x )将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误
s.discard( x )移除元素,如果元素不存在,不会发生错误
s.pop()随机删除集合中的一个元素
s.copy()复制集合
s.clear()清空集合
len(s)计算集合 s 元素个数
x in s判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False

代码示例:

s = set('13557')
print(s)

s.add('4')
print('s.add(\'4\'): ',s)

s.update(('4','5','6'))  #元组
print('s.update((\'4\',\'5\',\'6\')): ',s)

s.remove('6')
s.discard('5')
print('s.remove(\'6\')、s.discard(\'5\'): ',s)

s.pop()
print('s.pop():',s)

s.pop()
print('s.pop():',s)

s1 = s.copy()
print('s1 = s.copy():',s1)
print('len(s):',len(s))

print('\'1\' in s:','1' in s)


s.clear()
print('s.clear():',s)



'''
输出结果:
{'7', '1', '3', '5'}
s.add('4'):  {'5', '4', '7', '1', '3'}
s.update(('4','5','6')):  {'5', '6', '4', '7', '1', '3'}
s.remove('6')、s.discard('5'):  {'4', '7', '1', '3'}
s.pop(): {'7', '1', '3'}
s.pop(): {'1', '3'}
s1 = s.copy(): {'1', '3'}
len(s): 2
'1' in s: True
s.clear(): set()

'''

方法描述
s.isdisjoint(s1)判断两个集合是否包含相同的元素,没有相同元素返回 True,否则返回 False
s.issubset(s1)判断集合s的所有元素是否都包含在s1中,如果是则返回 True,否则返回 False
s.issuperset(s1)判断s1的所有元素是否都包含在s中,如果是则返回 True,否则返回 False
s = {'0','1','2'}
s1 = set("34")
print(s)
print(s1)
print('s.isdisjoint(s1):',s.isdisjoint(s1))     #没有相同元素返回true

print('---------------------')
s = {'0','1','2'}
s1 = set("01234")
print(s)
print(s1)
print('s.issubset(s1):',s.issubset(s1))     #判断集合s的所有元素是否都包含在s1中

print('---------------------')
s = {'0','1','2'}
s1 = set("01234")
s2 = set('01')
print(s)
print(s1)
print(s2)
print('s.issuperset(s1):',s.issuperset(s1))    #判断s1的所有元素是否都包含在s中
print('s.issuperset(s2):',s.issuperset(s2))    #判断s2的所有元素是否都包含在s中



'''
输出结果:
{'1', '0', '2'}
{'3', '4'}
s.isdisjoint(s1): True
---------------------
{'1', '0', '2'}
{'0', '4', '2', '1', '3'}
s.issubset(s1): True
---------------------
{'1', '0', '2'}
{'0', '4', '2', '1', '3'}
{'1', '0'}
s.issuperset(s1): False
s.issuperset(s2): True

'''

方法描述
s.union(s1, s2…)并集,返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次
s.difference(s1)差,s-s1,不改变集合
s.difference_update(s1)差,移除两个集合中都存在的元素,s-s1,改变集合s
s.intersection(s1, s2 … )交集,即相同元素,不改变集合
s.intersection_update(s1, s2 … )交集,即相同元素,改变集合s
s.symmetric_difference(s1)异或,返回两个集合中不重复的元素的集合
s.symmetric_difference_update(s1)异或,移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
print('---------并集(s1 ∪ s2)----------')
s1 = {'0','1','2'}
s2 = set("0234")
print('s1:',s1)
print('s2:',s2)
print('s1.union(s2):',s1.union(s2))
print("执行后:(不改变s1,s2)")
print('s1:',s1)
print('s2:',s2)



'''
输出结果:
---------并集(s1 ∪ s2)----------
s1: {'1', '2', '0'}
s2: {'4', '0', '2', '3'}
s1.union(s2): {'1', '2', '0', '4', '3'}
执行后:(不改变s1,s2)
s1: {'1', '2', '0'}
s2: {'4', '0', '2', '3'}

'''
print("-------------差集(s1-s2)-----------------")
s1 = {'0','1','2','3','4'}
s2 = set("23456")
print('s1:',s1)
print('s2:',s2)
print('s1.difference(s2):',s1.difference(s2))
print("执行后:(不改变s1,s2)")
print('s1.difference(s2),s1:',s1)
print('s1.difference(s2),s2:',s2)

print()
s1.difference_update(s2)
print("执行后:(改变s1)")
print('s1.difference_update(s2),s1:',s1)
print('s1.difference_update(s2),s2:',s2)



'''
输出结果:
-------------差集(s-s1)-----------------
s1: {'4', '2', '0', '1', '3'}
s2: {'4', '2', '5', '3', '6'}
s1.difference(s2): {'1', '0'}
执行后:(不改变s1,s2)
s1.difference(s2),s1: {'4', '2', '0', '1', '3'}
s1.difference(s2),s2: {'4', '2', '5', '3', '6'}

执行后:(改变s1,s2)
s1.difference_update(s2),s1: {'0', '1'}
s1.difference_update(s2),s2: {'4', '2', '5', '3', '6'}

'''
print('------------交集------------')
s = {'0','1','2'}
s1 = set("0234")
s2 = set('12456')
print('s:',s)
print('s1:',s1)
print('s2:',s2)
print('s.intersection(s1):',s.intersection(s1))
print("执行后:(不改变s,s1)")
print('s.intersection(s1),s:',s)
print('s.intersection(s1),s1:',s1)
print()
print('s.intersection(s1,s2):',s.intersection(s1,s2))
print("执行后:(不改变s,s1)")
print('s.intersection(s1),s:',s)
print('s.intersection(s1),s1:',s1)

print()
s.intersection_update(s1)
print("执行后:(改变s)")
print('s.intersection_update(s1),s:',s)
print('s.intersection_update(s1),s1:',s1)
s.intersection_update(s1,s2)
print('s.intersection_update(s1,s2),s:',s)



'''
输出结果:
------------交集------------
s: {'0', '2', '1'}
s1: {'3', '0', '4', '2'}
s2: {'2', '5', '4', '6', '1'}
s.intersection(s1): {'0', '2'}
执行后:(不改变s,s1)
s.intersection(s1),s: {'0', '2', '1'}
s.intersection(s1),s1: {'3', '0', '4', '2'}

s.intersection(s1,s2): {'2'}
执行后:(不改变s,s1)
s.intersection(s1),s: {'0', '2', '1'}
s.intersection(s1),s1: {'3', '0', '4', '2'}
'''
print('------------异或(保留不相同元素)------------')
s = {'0','1','2'}
s1 = set("0234")
s2 = set('12456')
print('s:',s)
print('s1:',s1)
s.symmetric_difference(s1)
print('s.symmetric_difference(s1):',s.symmetric_difference(s1))
print("执行后:(不改变s)")
print('s.symmetric_difference(s1),s:',s)
print('s.symmetric_difference(s1),s1:',s1)

print()
s.symmetric_difference_update(s1)
print("执行后:(改变s)")
print('s.symmetric_difference_update(s1),s:',s)#移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
print('s.symmetric_difference_update(s1),s1:',s1)



'''
输出结果:
------------异或(保留不相同元素)------------
s: {'1', '0', '2'}
s1: {'3', '0', '2', '4'}
s.symmetric_difference(s1): {'3', '1', '4'}
执行后:(不改变s)
s.symmetric_difference(s1),s: {'1', '0', '2'}
s.symmetric_difference(s1),s1: {'3', '0', '2', '4'}

执行后:(改变s)
s.symmetric_difference_update(s1),s: {'3', '1', '4'}
s.symmetric_difference_update(s1),s1: {'3', '0', '2', '4'}
'''

Dictionary字典

Python中另一个非常有用的内置数据类型

字典是无序的对象集合( 列表是有序的对象集合

字典是一种映射类型用 { } 标识,key和value用":“隔开,键值对之间用”,"分隔,是一个无序的 键值(key-value) 集合

元素通过键key来存取,在同一个字典中,键(key)唯一

键(key)必须使用不可变类型(Number、String、Tuple),值可以取任何数据类型


一、 创建字典

1、 用{}标识

代码示例:

# create dictionary
d1= {}
d1['哈哈'] = 'haha'
d1['嘿嘿']= 'heihei'
d2 = {'昵称': '入错行的北北','码龄': '1年','博客':'北北的博客'}
# print dictionary
print (d1["哈哈"])       # 输出键为"哈哈"的值
print (d1["嘿嘿"])       # 输出键为"嘿嘿"的值
print(d1)
print (d1.keys())   # 输出所有键
print (d1.values()) # 输出所有值
print()
print (d2)          # 输出完整的字典
print (d2.keys())   # 输出所有键
print (d2.values()) # 输出所有值

d = { }				#创建空字典
print(d)




'''
输出结果:
haha
heihei
{'哈哈': 'haha', '嘿嘿': 'heihei'}
dict_keys(['哈哈', '嘿嘿'])
dict_values(['haha', 'heihei'])

{'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
dict_keys(['昵称', '码龄', '博客'])
dict_values(['入错行的北北', '1年', '北北的博客'])
{}
'''

2、 构造函数dict

构造函数 dict() 可以直接从键值对序列中构建字典

代码示例:

# create dictionary
d = dict([('昵称','入错行的北北'), ('码龄','1年'), ('博客','北北的博客')])
print (d)          # 输出完整的字典
print(d['昵称'])
print(d['码龄'])
print(d['博客'])
print (d.keys())   # 输出所有键
print (d.values()) # 输出所有值



'''
输出结果:
{'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
入错行的北北
1年
北北的博客
dict_keys(['昵称', '码龄', '博客'])
dict_values(['入错行的北北', '1年', '北北的博客'])
'''

3、 其它方法

代码示例1:

d = {x: x ** 2 for x in (2, 4, 6)} #**2,平方; **n,n次方
print(d)



'''
输出结果:
{2: 4, 4: 16, 6: 36}
'''

代码示例2:

d = dict(aa=1, bb=2, cc=3)
print(d)



'''
输出结果:
{'aa': 1, 'bb': 2, 'cc': 3}
'''

二、 基本操作

  • 修改字典
d = dict([('昵称','北北'), ('码龄','1年'), ('博客','北北的博客')])
print (d)          # 输出完整的字典
d['昵称'] = '入错行的北北'  #修改
print(d)



'''
输出结果:
{'昵称': '北北', '码龄': '1年', '博客': '北北的博客'}
{'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
'''

  • 删除字典元素
    删除单一元素
    清空字典
d = dict([('昵称','北北'), ('码龄','1年'), ('博客','北北的博客')])
print ('原始字典:',d)          # 输出完整的字典
del d['码龄'] # 删除键 '码龄'
print('del d[\'码龄\']:',d)
d.clear()     # 清空字典
print('d.clear():',d)




'''
输出结果:
原始字典: {'昵称': '北北', '码龄': '1年', '博客': '北北的博客'}
del d['码龄']: {'昵称': '北北', '博客': '北北的博客'}
d.clear(): {}

'''
  • 删除字典
del d        # 删除字典
print(d)


'''
输出结果:(报错)
NameError: name 'd' is not defined
'''

三、 内置函数

函数名作用
len()求长度
type()查询类型
str()字典以可打印的字符串表示

代码示例:

d = dict([('昵称','入错行的北北'), ('码龄','1年'), ('博客','北北的博客')])

print ("d字典长度len(d): ", len(d))
print ("d的类型type(d): ", type(d))
print()
print('输出字典d :' , d)            #输出字典
print ( '输出字典str(d) :' , str(d))     #输出字典,以可打印的字符串表示





'''
代码示例:
d字典长度len(d):  3
d的类型type(d):  <class 'dict'>

输出字典d : {'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
输出字典str(d) : {'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}


'''

四、 内置方法

方法名描述
copy()返回一个字典的浅复制
clear()删除字典内所有元素
get()返回指定键的值,如果值不在字典中返回default值
key in dict判断键是否存在于字典中,是则为true
key not in与in相反
dict.items()返回视图对象
d = dict([('昵称','入错行的北北'), ('码龄','1年'), ('博客','北北的博客')])

d1 = d.copy()
print('d.items():',d.items())
print('d1 = d.copy(): ' , d1)
d.clear()           #删除字典内所有元素
print('d.clear(): ',d)
print()
print('d1.get(\'昵称\') :' ,d1.get('昵称'))
print('昵称' in d)
print('name' not in d)

'''
输出结果:
d.items():dict_items([('昵称', '入错行的北北'), ('码龄', '1年'), ('博客', '北北的博客')])
d1 = d.copy():  {'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
d.clear():  {}

d1.get('昵称') : 入错行的北北
True
True
'''

方法名描述
keys()返回一个迭代器,可以使用 list() 来转换为列表
values()返回一个迭代器,可以使用 list() 来转换为列表
setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
d = dict([('昵称','入错行的北北'), ('码龄', '1年')])
print('d.keys():',d.keys())
print('d.values():',d.values())

print()
print("昵称 键的值为 : %s" % dict.setdefault('昵称', None))
print("博客 键的值为 : %s" % dict.setdefault('博客', '北北的博客'))
print("新字典为:", dict)


'''
输出结果:
d.keys(): dict_keys(['昵称',  '博客'])
d.values(): dict_values(['入错行的北北', '北北的博客'])

昵称 键的值为 : 入错行的北北
博客 键的值为 : 北北的博客
新字典为: {'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
'''

方法名描述
dict.fromkeys(seq[, value])创建一个新字典,seq中元素为键,value为键对应的初始值
update(dict2)把字典dict2的键/值对更新到dict里
pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值
popitem()随机返回并删除字典中的一对键和值(一般删除末尾对)
seq = ('昵称', '码龄', '博客')
dict = dict.fromkeys(seq)
print("新的字典为 :" ,str(dict))

value = ('你猜')
dict = dict.fromkeys(seq, value)
print("新的字典为 : %s" % str(dict))

print()
d1 = dict([('昵称','入错行的北北'), ('码龄', '1年')])
d2 = {'博客':'北北的博客'}
d1.update(d2)
print(d1)

print('d1.pop(\'码龄\'):',d1.pop('码龄'))
print('d1:',d1)

print()
print('d1.popitem():',d1.popitem())	#默认删除末尾
print('d1:',d1)
'''
输出结果:
新的字典为 : {'昵称': None, '码龄': None, '博客': None}
新的字典为 : {'昵称': '你猜', '码龄': '你猜', '博客': '你猜'}

{'昵称': '入错行的北北', '码龄': '1年', '博客': '北北的博客'}
d1.pop('码龄'): 1年
d1: {'昵称': '入错行的北北', '博客': '北北的博客'}

d1.popitem(): ('博客', '北北的博客')
d1: {'昵称': '入错行的北北'}

'''

标签:Set,Dictionary,s2,s1,数据类型,博客,北北,print,字典
来源: https://blog.csdn.net/m0_50609545/article/details/119247870

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有