导航:首页 > 编程语言 > python怎么匹配字典

python怎么匹配字典

发布时间:2023-11-14 14:44:11

A. python自学笔记13:元组和字典的操作

定义元组(tuple):

t1=(1,2,3,4)#多个数据元组

t2=(1,)#如果元组内只有一个数据,也需要手逗号隔开,否则这个数据将是他本身的类型。

元组的操作:

元组类型数据不支持修改,可查找

查找:

按下标查找:

print(t1[1])

函数查找:

print(t1.index(1))返回对应下标,如果数据不存在,程序将报错

print(t1.count(1))统计数据在元组当中出现的次数

print(len(t1))统计元组当中的数据个数

注意:当元组内嵌套列表数据,可以通过下标的方法对列表数据进行修改如:

t3=(1,2,["a","b"])

t3[2][0]=c #t3的值将变为(1,2,["c","b"])

——————————————————

——————————————————

定义字典(dict)

字典的特点

1:符号为{}

2:数据为键(key)值(value)对形式,每个键值对之间用逗号隔开如:

dict1={"name":"小明","age":18,"gender:男"}

字典的操作:

dict1["name"]="小红"

dict1["id"]=3

如果key存在,将修改其所对应的值。如果不存在,将在字典最后添加该键值对

2.删除数据

del():删除字典或删除字典内的键值对

del dict1["name"] 删除字典内的键值对,如果删除的key不存在,程序将会报错

del(del)删除字典

clear(dict1) 清空字典

3.查找数据

一.按照key进行查找,最后返回相对应的值

二.按函数进行查找:

(1) get(key,默认值):

如果查找的key不存在则返回所写的默认值,如果不写默认值则返回None

dict1={"name":"小明","age":18,"gender:男"}

print(dict1.get("name")) #小明

print(dict1.get("id",110)) # 110

——————————————————

(2) keys():返回字典内的所有key 可用for遍历

print(dict1.keys())

返回 ["name","age","gender"]

for key in dict1.keys():

..print(key)

逐行输出name age gender

——————————————————

(3) values(): 返回字典内的值 可用for遍历

print(dict1.values())

返回["小明",18,"男"]

for value dict1.values():

..print(value)

逐行输出小明 18 男

——————————————————

(4) items():将字典内的数据以元组的形式返回

print(dict1.items()) 可用for遍历

返回[("name","小明"),("age",18),("gender","男")]

for item in dict1.items():

..print(item)

逐行输出 ("name","小明") ("age",18)("gender","男")

——————————————————

遍历字典键值对(拆包) 可在for内使用两个临时变量

dict1={"name":"小明","age":18,"gender:男"}

for key,value in dict1.items():

..print(f"{key}=value")

逐行输出:

name=小明 age=18 gender=男

B. python 字典问题

首先,你这个for循环体中的if结构,它的两个分支都包含了return,那么,无论if的表达式是真还是假,都会return。

那么,就是说,这个for第一次循环就必然会遇到一个return。

所以,不会循环第二次,也就不会匹配到字典中value为'2009'的那一条了。

实际上的运行过程中,第一次key为'172.29.92.160',与host不能匹配,执行了returnprint('Nonevalue!')这一句。

这里,print('Nonevalue!')会产生一个输出行,内容为'Nonevalue!';

然后return的是print()的结果,而print()是没有返回值或者说返回值是None,因此,这个conportnum()的返回值就是None

所以你看到了两行输出,第一行是函数中print()语句产生的输出,第二行是函数conportnum()的结果值。

你这个函数的功能就是从字典中寻找key为指定值的项,可以这样做:

portnum={"172.29.92.160":'2010',
"172.29.92.159":'2009',
}
port=portnum.get('172.29.92.159')
ifnotport:
#没有匹配项
else:
#对应端口在port中

如果有默认端口,匹配不到则使用的默认端口的话:

DEFAULT_PORT='8080'
portnum={"172.29.92.160":'2010',
"172.29.92.159":'2009',
}
port=portnum.get('172.29.92.159',DEFAULT_PORT)
#对应端口在port中

C. python中字典常用的方法有哪些,分别有什么作用

写法:字典序列[key] = 值 ***字典为可变类型

常用方法:
1、# 新增字典中的数据
dict1 = {'name':'huu','age':20,'gender':'男'}
dict1['id'] = 133
print(dict1)

2、# 修改字典中的数据
dict1['name'] = 'xiauaiguai'
print(dict1)
3、删除字典或删除字典中指定键值对
del()/del:

dict1 = {'name':'huanghu','age':30,'gender':'男'}

# del(dict1) 直接将字典删除了,运行报错

del dict1['name']
print(dict1)
# del dict1[names] 删除不存在的key,运行报错

4、清空字典
clear():
dict1.clear() # 清空字典
print(dict1)

5、查找
key值查找
如果当前查找的key存在则返回对应的值,否则则报错
函数查找
get():如果当前查找的key不存在则返回第二个参数值(默认值),
如果省略第二个参数则返回 None
key()

dict1 = {'name':'huhu','age':20,'gender':'男'}

print(dict1['name']) # huhu
print(dict1['id']) # 报错

# 1, get()查找

print(dict1.get('name')) # huanghu
print(dict1.get('id',133)) # 133--如果当前查找的key不存在则返回第二个参数值(默认值)
print(dict1.get('id')) # None--如果省略第二个参数则返回 None

# 2, keys() 查找字典中所有的key,返回可迭代对象
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])

# 3,values() 查找字典中所有的values,
print(dict1.values()) # dict_values(['huanghu', 30, '男'])

# 4, items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,
元组数据1是字典中的key,元组数据2是字典key对应的值
print(dict1.items()) # dict_items([('name', 'huahu'), ('age', 20), ('gender', '男')])

D. python字典的基本操作

python字典的基本操作如下:

查询字典

字典里面可以嵌套字典,嵌套列表。

E. Python其实很简单 第十章 字典与集合

前面介绍的列表和元组都是有序序列,而字典与集合属于无序序列,也就是说,不能通过索引来操作元素。

10.1 字典

语法格式:

dictionary= {key1 : value1, key2 : value2, key3 : value3 ,...., key n : value n }

其中,dictionary是字典名称,key表示元素的键,value表示元素的值,键和值必须是成对的。

如:

>>> dict1 = { 'abc': 123, 98.6: 37 }

>>> dict1

{'abc': 123, 98.6: 37}

可以看出,键可以是字符串、数字或者元组,但必须是唯一的;而值可以是任何数据类型,也没有要求是唯一的。

1、创建字典的方法

方法一:同时给定键和值,即“关键字参数”形式。

dictionary=dict(key1=value1,key2=value2,.....,key n=value n)

注意:这里的key 必须符合Python标识符的命名规则。

例:

先使用“{}”创建字典:

>>> dict1={1:'一',2:'二',3:'三',4:'四',5:'五'}

>>> dict1

{1: '一', 2: '二', 3: '三', 4: '四', 5: '五'}

再通过“关键字参数”形式创建:

>>> dict1=dict(1='一',2='二',3='三',4='四',5='五')

SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

创建不成功,原因在于key 不符合Python标识符的命名规则。前面已经介绍过,标识符不能用数字表示或者用数字打头。

现在对键如下修改:

>>> dict1=dict(n1='一',n2='二',n3='三',n4='四',n5='五') #在数字前加了一个字符”n”

>>> dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五'}

方法二 :使用已经存在的元组和列表通过映射函数创建字典。

格式:dictionary=dict(zip(tuplekey,listvalue))

例:

>>> tuplekey=('n1','n2','n3','n4','n5') #键的序列采用元组

>>> listvalue=['一','二','三','四','五'] #值的序列采用列表

>>> dict1=dict(zip(tuplekey,listvalue))

>>> dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五'}

注意:tuple(listname)函数可以将列表转换为元组,list(tuplename)函数可以将元组转换为列表。

2、通过键访问字典

直接获取键的相应元素的值

>>> dict1['n2']

'二'

利用get()方法

>>> dict1.get('n2')

'二'

get()方法也可以带参数,当要访问的键不存在时返回一个字符串。如:

>>> dict1.get('n0','can't find!') #当要查找的键不存在,返回'can't find!'

"can't find!"

3、遍历字典

使用字典对象的items()方法可以获取字典的“键.值对”列表。

>>> for item in dict1.items():

print(item)


('n1', '一')

('n2', '二')

('n3', '三')

('n4', '四')

('n5', '五')

也可以获取具体的每个元素的键和值,如:

>>> for key,value in dict1.items():

print(key,'对应的是',value)


n1 对应的是 一

n2 对应的是 二

n3 对应的是 三

n4 对应的是 四

n5 对应的是 五

4、添加、修改和删除字典元素

使用下面的语句,若指定的键存在,就可以修改该元素的值;若指定的键不存在,则添加该元素。如:

>>> dict1['n6']='六' # 键’n6’不存在,故添加该元素

>>> dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五', 'n6': '六'}

>>> dict1['n4']='肆' # 键’n4’存在,故修改该元素

>>> dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '肆', 'n5': '五', 'n6': '六'}

5、利用推导式建立字典

import random

dict1={i:random.randint(1,100) for i in range(5)}

# 生成元素的键为0到5整数,值为1到100之间的随机数

print(dict1)

运行结果:{0: 28, 1: 59, 2: 79, 3: 30, 4: 88}

10.2 集合

集合是数学中一个很重要的概念,集合具有确定性、互异性、无序性三个基本属性。在Python中,集合同样具有这三个基本属性,其中,确定性是指对象要么是集合的元素,要么不是集合的元素;互异性是指集合中的元素不能重复;无序性是指集合中的元素不分先后次序,可以随意更换位置。

1、集合的创建

直接使用“{}”创建

>>> set1={'春','夏','秋','冬'}

>>> set1

{'秋', '春', '冬', '夏'}

>>> set2={3,2,1,4,5}

>>> set2

{1, 2, 3, 4, 5}

利用已有的列表、元组创建集合

>>> list1=['东','南','西','北']

>>> set3=set(list1)

>>> set3

{'南', '东', '北', '西'}

利用已有的集合建立一个“副本”

>>> set3

{'南', '东', '北', '西'} #set3和set4的值一样

>>> set4=set3

>>> set4

{'南', '东', '北', '西'}

>>> set4.add('中') #给set4添加元素

>>> set4

{'西', '中', '东', '南', '北'} # 这个好理解

>>> set3

{'西', '中', '东', '南', '北'} # 意想不到吧?Set3为什么会发生变化?

再看看简单变量的情况:

>>> a=2

>>> b=a #是不是与前面set4=set3相似

>>> b+=1

>>> b

3

>>> a

2 #但a的值并没有发生改变

从上面集合set3、set4和简单变量a、b的值的变化情况对比,不难发现set3和set4是指向同一地址的对象,而变量a和变量b指向了不同地址,语句b=a是将a的值传递个b,并不是将a的地址传递给b。列表、元组、字典都和集合一样具有这样的性质。

所以,将set4称为set3的“副本”更为恰当。

2、添加和删除元素

>>> set3

{'南', '东', '北', '西'}

>>> set3.add('中') # 添加元素

>>> set3

{'西', '中', '东', '南', '北'} # 集合内的元素是无序的,不要纠结次序的变化

>>> set3.remove('中') # 删除元素

>>> set3

{'西', '东', '南', '北'}

3、集合运算

集合运算包括交(&)、并(|)、差(-),和数学中的集合运算是一致的。

>>> set3={'南', '东', '北', '西'}

>>> set4={'西', '中', '东', '南', '北'}

>>> set3 & set4 #取set3和set4的交集

{'西', '南', '北', '东'}

>>> set3 | set4 #取set3和set4的并集

{'中', '南', '北', '西', '东'}

>>> set3 - set4 #取set3与set4的差,即set3比set4多出来的元素

set()

>>> set4 -set3 #取set4与set3的差,即set4比set3多出来的元素

{'中'}

阅读全文

与python怎么匹配字典相关的资料

热点内容
国际版本服务器是什么意思 浏览:435
压缩机十年包换 浏览:530
内核编译之后安装到哪 浏览:58
单片机加场效应管 浏览:152
怎么关闭appstore 浏览:474
学编程入门语言 浏览:307
安卓机为什么总是出现升级提示 浏览:133
b树java实现 浏览:943
亚马逊云服务器到期了怎么续费 浏览:850
我的世界网易如何在服务器里面加光影 浏览:284
nat地址访问外网服务器 浏览:966
怎样用java编译一个心形 浏览:934
如何使用python中的pygame 浏览:836
python实用小工具 浏览:24
怎么在安卓手机上去除马赛克 浏览:235
农行浓情通app怎么下载 浏览:533
怎么把原文件夹找回来 浏览:535
俄罗斯方块实现python思路 浏览:735
汉语拼音英语编译代码 浏览:501
程序员应具备的能力 浏览:606