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 == spam2
False
>>> spam3 = {1:'a', 2:'b', 3:'c'}
>>> spam4 = {2:'b', 1:'a', 3:'c'}
>>> spam3 == spam4
True
>>>
复制代码
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)
name
age
>>> for j in me.values():
print(j)
axyzdong
22
>>> 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:axyzdong
Key: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 : demo
message = 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 pprint
message = 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() #清空集合元素
>>> set2
set()
复制代码
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**
本次的分享就到这里
如果我的文章对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦!
听说 👉 点赞 👈 的人运气不会太差,每一天都会元气满满呦!^ _ ^
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了👉 关注 👈我哦!
如果以上内容有任何错误或者不准确的地方,欢迎在下面👇留个言。或者你有更好的想法,欢迎一起交流学习~~~
评论