Python基础——字典和集合在一起玩

1.字典

对于字典这个数据类型,可能有点陌生。其实它是 键:值(key:value)对集合。结合实际想一想,查新华字典的时候,是不是我们需要查找它的拼音或者偏旁部首来查找某一个字。其中拼音或者偏旁部首就是键值,而所要查找的字便是键值对应的值。
多个键可以对应一个值,但是键不能有重复的。结合真实的字典想一想便能很好的理解了。

1.1 字典的创建

注意字典的创建,是用大括号 { } 括起来的

#创建模式1:键可为数值或字符串
dic1 = {1: 'one', 2: 'two', 3: 'three'}
print(dic1)  # {1: 'one', 2: 'two', 3: 'three'}
dic2 = {'rice': 35, 'wheat': 101, 'corn': 67}
print(dic2)  # {'wheat': 101, 'corn': 67, 'rice': 35}

#创建模式2:键可为元组
dic = {(1, 2, 3): "Tom", "Age": 12, 3: [3, 5, 7]}
print(dic[(1,2,3)])  # Tom

#创建模式3:通过创建一个空的字典,再后续添加
dic = dict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
print(dic)
# {'a': 1, 'b': 2, 'c': 3}

#创建模式4:通过创建元组或者列表的形式
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)]) #列表[]
print(dic1)  # {'cherry': 4098, 'apple': 4139, 'peach': 4127}

dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098))) #元组() 
print(dic2)  # {'peach': 4127, 'cherry': 4098, 'apple': 4139}

#创建方式5:通过 name=value 的方式
dic = dict(name='Tom', age=10)
print(dic)  # {'name': 'Tom', 'age': 10}
dic = dict('1'='Tom', age=10)
print(dic) # 报错

1.2字典的内置方法

关于获取的

名字描述
X.values()获取字典中的所有值
X.keys()获取字典中的所有键
X.items()以列表返回可遍历的 (键, 值) 元组数组
dic = {'Sex': 'female', 'Age': 7, 'Name': 'Zara','School':'LA','home':'QCL_1314'}
print(dic.keys()) #dict_keys(['Sex', 'Age', 'Name', 'School', 'home'])
print(dic.values()) #dict_values(['female', 7, 'Zara', 'LA', 'QCL_1314'])
print(list(dic.items())) #[('Sex', 'female'), ('Age', 7), ('Name', 'Zara'), ('School', 'LA'), ('home', 'QCL_1314')]
for key,i in dic.items():
    print(key,i,sep=':',end=' ') #Sex:female Age:7 Name:Zara School:LA home:QCL_1314 

关于指定查找

名字描述
X.get(key, default=None)返回指定键的值,如果值不在字典中返回默认值
X.setdefault(key, default=None)键不存在于字典中,将会添加键并将值设为默认值。
dic = {'Name': 'Lsgogroup', 'Age': 27}
print("Age 值为 : %s" % dic.get('Age'))  # Age 值为 : 27
print("Sex 值为 : %s" % dic.get('Sex', "NA"))  # Sex 值为 : NA

dic = {'Name': 'Lsgogroup', 'Age': 7}
print("Age 键的值为 : %s" % dic.setdefault('Age', None))  # Age 键的值为 : 7
print("Sex 键的值为 : %s" % dic.setdefault('Sex', None))  # Sex 键的值为 : None

关于删除的

名字描述
X.pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。若key不存在,则返回 default 值
X.popitem()随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常
X.dict[key]删除字典给定键 key 所对应的值
X.clear()用于删除字典内所有元素
dic1 = {1: "a", 2: [1, 2]}
print(dic1.pop(1), dic1)  # a {2: [1, 2]}

# 设置默认值,必须添加,否则报错
dic1 = {1: "a", 2: [1, 2]}
print(dic1.pop(1), dic1)  # a {2: [1, 2]}

# 设置默认值,必须添加,否则报错
print(dic1.pop(3, "nonekey"), dic1)  # nonekey {2: [1, 2]}
del dic1[2]
print(dic1) #{}
dic1 = {1: "a", 2: [1, 2],3:'CS'}
print(dic1.popitem())  # (3, 'CS')
print(dic1)  # {1: 'a', 2: [1, 2]}
dic1.clear()
print(dic1) #{}

2.集合

在字典的基础上,去掉值的内容,保留键,就是集合了。因为键是不能重复的,同理集合中的值是不会重复的。即使在创建时,赋值了多个相同的值,写入的都是不重复的值。

num = {1, 2, 3, 4,3,4}
print(num) # {1, 2, 3, 4}
print(type(num))  # <class 'set'>
num = {1:'name', 2:'age', 3:'sex', 4:'grade'}
print(type(num))  # <class 'dict'>

2.1集合的创建

集合分两种:1.创建后可添加删除(上述例子便是) 2.创建后不可添加删除

名字描述
frozenset([iterable])返回一个冻结的集合,冻结后集合不能再添加或删除任何元素
b = frozenset('marry')
print(b)  
# frozenset({'r', 'y', 'm', 'a'})

普通创建

#创建模式1:创建空的集合,再使用add()方法添加
basket = set()
basket.add('apple')
basket.add('banana')
print(basket)  # {'banana', 'apple'}

#创建模式2:直接创建
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)  # {'banana', 'apple', 'pear', 'orange'}

还可将列表或者元组直接转换成集合,可利用这种转换,去除列表中重复的值

a =("Google", "Lsgogroup", "Taobao", "Taobao")
b = set(a)
print(b)  
# {'Taobao', 'Lsgogroup', 'Google'}
c=["Google", "Lsgogroup", "Taobao", "Google"]
d = set(c)
print(d)  
# {'Taobao', 'Lsgogroup', 'Google'}

e=[1,2,3,3,4,5,6,6,7]   
f = set(e)   #去重
print(e)  # [1, 2, 3, 3, 4, 5, 6, 6, 7]
print(f) # {1, 2, 3, 4, 5, 6, 7}

2.2集合值的读取

s = set(['Google', 'Baidu', 'Taobao'])
for item in s:
    print(item)

2.3 集合的内置方法

名字描述
set.add(elmnt)添加元素,若添加的元素在集合中已存在,则不执行任何操作
set.update(set)修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略
set.remove(item)用于移除集合中的指定元素。如果元素不存在,则会发生错误
set.discard(value)用于移除指定的集合元素
set.pop()用于随机移除一个元素

2.4数学意义上的集合操作——交并等

名字描述
交集 set.intersection(set1, set2)返回两个集合的交集
并集 set.union(set1, set2)返回两个集合的并集
差集 set.difference(set)返回集合的差集
异或 set.symmetric_difference(set)返回集合的异或
包含 set.issubset(set)判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False
包含set.issuperset(set)用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False
包含set1 >= set2判断集合是不是包含其他集合,如果是则返回 True,否则返回 False
包含 set1 <= set2判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False
异或 set1 ^ set2返回集合的异或
差集 set1 - set2返回集合的差集
交集 set1 & set2返回两个集合的交集
并集 set1set2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值