Author:AXYZdong
自动化专业 工科男
有一点思考,有一点想法,有一点理性!
定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!
更多精彩文章前往:👉 个人主页
一、字典
字典(dictionary),它是由一系列的键值对组合而成的数据结构 。
字典的索引可以使用不同数据类型,不只是整数。字典的索引被称为”键“,键及其关联的值被称为”键-值“对。
字典中的每个键与一个值相关联
键,必须是可 hash 的值,如字符串,数值等
值,可以是任意对象
1.1 创建字典
使用花括号 {} 创建字典。
>>> me = {'name':'axyzdong', 'age':'22'}>>> me['name']'axyzdong'>>> 'My name is '+ me['name']'My name is axyzdong'
复制代码
将一个字典赋给 me 变量。这个字典的键值为 ’name‘,’age‘。这些键对应的值分别为 ’axyzdong‘ ,’22‘。可通过它们的键来访问这些值。
字典可以使用整数作为键。
>>> spam = {12345:'Luggage Combinaion', 42:'The Answer'}>>> spam[42]'The Answer'
复制代码
1.2 字典与列表
与列表不同的是,字典中的表项是不排序的,也就是说字典中的’键-值‘对没有顺序之分。
>>> spam1 = ['a','b','c']>>> spam2 = ['b','a','c']>>> spam1 == spam2False>>> spam3 = {1:'a', 2:'b', 3:'c'}>>> spam4 = {2:'b', 1:'a', 3:'c'}>>> spam3 == spam4True>>>
复制代码
1.3 增删改查
查看元素
>>> me = {'name':'axyzdong', 'age':'22'}>>> me['name']'axyzdong'
复制代码
新增元素
>>> me = {}>>> me['name']='axyzdong'>>> me['age']='22'>>> me{'name': 'axyzdong', 'age': '22'}
复制代码
修改元素
>>> me = {'name': 'axyzdong', 'age': '22'}>>> me['age'] = '20'>>> me{'name': 'axyzdong', 'age': '20'}
复制代码
删除元素
>>> spam = {1:'a', 2:'b', 3:'c'}>>> spam.pop(1)'a'>>> spam{2: 'b', 3: 'c'}>>> del spam[2]>>> spam{3: 'c'}
复制代码
1.4 重要方法
它们返回类似列表的值,分别对应字典的键值、值和键-值对:keys()、values() 和 items()。返回的值不是真正的列表,不能被修改。但是这些数据类型(分别是 dict_keys、dict_vslues 和 dict_items)可以用于 for 循环。
>>> me = {'name': 'axyzdong', 'age': '22'}>>> for i in me.keys(): print(i)
nameage>>> for j in me.values(): print(j)
axyzdong22>>> for k in me.items(): print(k)
('name', 'axyzdong')('age', '22')
复制代码
可以通过 list 函数将返回值转为真正的列表。
>>> me = {'name': 'axyzdong', 'age': '22'}>>> list(me.keys())['name', 'age']>>> list(me.values())['axyzdong', '22']>>> list(me.items())[('name', 'axyzdong'), ('age', '22')]
复制代码
多重赋值技巧
>>> me = {'name': 'axyzdong', 'age': '22'}>>> for i,j in me.items(): print('Key:' + i + ' Value:' + j)
Key:name Value:axyzdongKey:age Value:22
复制代码
>>> me = {'name': 'axyzdong', 'age': '22'}>>> 'name' in me.keys()True>>> 'axyzdong' in me.values()True>>> ('name','axyzdong') in me.items()True
复制代码
get() 方法有两个参数,第一个参数:要取得其值的键;第二个参数:如果该键不存在时,返回的备用值。
>>> me = {'name': 'axyzdong', 'age': '22'}>>> 'My name is ' + me.get('name', 'Li Hua')'My name is axyzdong'>>> 'My name is ' + me.get('fiend', 'Li Hua')'My name is Li Hua' #当‘friend’键不存在时,返回备用值‘Li Hua’
复制代码
setdefault() 方法有两个参数,第一个参数:要检查的键;第二个参数:如果该键不存在时要设置的值。(如果该键存在,方法就会返回键的值)
me = {'name': 'axyzdong', 'age': '22'}>>> me.setdefault('hobby','cycling')'cycling'>>> me{'name': 'axyzdong', 'age': '22', 'hobby': 'cycling'}>>> me.setdefault('name','Li Hua')'axyzdong'>>> me{'name': 'axyzdong', 'age': '22', 'hobby': 'cycling'}
复制代码
demo:计算输入字符串中每个字符出现的次数。
# -*- coding: utf-8 -*-# @File : characterCount# @Author : axyzdong# @Time : 2021/11/25 21:28# @Project : demomessage = str(input('message = '))count = {}for character in message: count.setdefault(character, 0) count[character] = count[character]+1
print(count)
复制代码
交互式窗口输入 my name is axyzdong! ,得到每个字符出现的次数。
message = my name is axyzdong !{' ': 5, 'm': 2, 'y': 2, 'n': 2, 'a': 2, 'e': 1, 'i': 1, 's': 1, 'x': 1, 'z': 1, 'd': 1, 'o': 1, 'g': 1, '!': 1}
复制代码
pprint 模块实现漂亮打印
import pprintmessage = str(input('message = '))count = {}for character in message: count.setdefault(character, 0) count[character] = count[character]+1
pprint.pprint(count)
复制代码
交互式窗口输入 my name is axyzdong !,运行结果如下:
message = my name is axyzdong !{' ': 4, '!': 1, 'a': 2, 'd': 1, 'e': 1, 'g': 1, 'i': 1, 'm': 2, 'n': 2, 'o': 1, 's': 1, 'x': 1, 'y': 2, 'z': 1}
复制代码
二、集合
python 中集合和数学上的集合是一致的,不允许有重复的元素(即集合里面的元素唯一),而且可以进行交集、并集、差集等运算。
2.1 创建集合
>>> set1 = {1,2,3}>>> print(set1){1, 2, 3}>>> set2 = set(range(1,10))>>> set3 = set((1,2,3))>>> print(set2,set3){1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3}
复制代码
2.2 添加元素和删除元素
>>> set1 = {1,2,3} #添加元素>>> set1.add(4)>>> set1{1, 2, 3, 4}>>> set1.update([7,8]) #添加元素>>> set1{1, 2, 3, 4, 7, 8}>>> if 7 in set1: #删除元素 set1.remove(7) >>> set1{1, 2, 3, 4, 8}>>> set2 = {'a', 'b', 'c'}>>> set2.pop() #随机删除元素'b'>>> set2{'a', 'c'}>>> set2.clear() #清空集合元素>>> set2set()
复制代码
2.3 集合运算
>>> set1 = {1, 2, 3 ,'a'}>>> set2 = {1, 'a', 'b', 'c'}>>> print(set1.intersection (set2)) #交集{1, 'a'}>>> print(set1.union(set2)) #并集{1, 2, 3, 'c', 'b', 'a'}>>> print(set1.difference (set2)) #差集{2, 3}>>> print(set1.symmetric_difference (set2)) #对称差{2, 3, 'c', 'b'}
复制代码
>>> print(set1 & set2) #交集{1, 'a'}>>> print(set1 | set2) #并集{1, 2, 3, 'c', 'b', 'a'}>>> print(set1 - set2) #差集{2, 3}>>> print(set1 ^ set2) #对称差{2, 3, 'c', 'b'}
复制代码
>>> print(set2.issubset(set1))False>>> print(set1.issuperset(set2))False
复制代码
参考文献
[1]:https://github.com/jackfrued/Python-100-Days
[2]:Python 编程快速上手:让繁琐工作自动化/ (美)斯维加特(A1 Sweigart) 著;王海鹏译.北京:人民邮电出版社,2016.7
[3]:Python 中文指南;作者:王炳明,版本:v1.0**
本次的分享就到这里
如果我的文章对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦!
听说 👉 点赞 👈 的人运气不会太差,每一天都会元气满满呦!^ _ ^
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了👉 关注 👈我哦!
如果以上内容有任何错误或者不准确的地方,欢迎在下面👇留个言。或者你有更好的想法,欢迎一起交流学习~~~
评论