python字典操作整理(python字典类型和操作)

http://www.itjxue.com  2023-04-12 20:49  来源:未知  点击次数: 

python-字典

1、字典:

? ? ? 两大特点:无序,键唯一

? ? ? 无序存储,键值对的形式存储数据

? 键是唯一不可修改的,不能用列表做键

2、python中不可变类型:整形,字符串,元组

? ? 可变类型:字典,列表

3、字典中方法:

增加:

dic1 = {'name':'alex'}

dic1 = ['age'] =18

*dic1 = {'age':18,'name':'alex'}

? ? ? dic1.setdefault() 键存在,不改动,返回字典相应键对应的值,键不存在,在字典中增加新的键值对,并返回相应的值

查找:

? ? ? ? 通过键查找

? ? ? ? ? dic1.keys()打印字典中所有键?

? #dict1.keys['name','age']? --转换成列表:list(dic1.keys())

? ? ? ? ? dic1.values()打印字典中所有值

? ? ? ? ? dic1.items()打印所有键值对

修改:

? ? ? ? ? 直接赋值

dic3= {'name':'alex','age':18}

dic4 = {'sex':'male','age':36}

? ? ? ? ? dic3.update(dic4)? ? #有相同的key,值会修改

删除:

? ? ? ? ? dic.clear()? ? #清空字典

? ? ? ? ? del dic['name'] #删除字典中指定键值对

? ? ? ? ? dic.pop('age')#删除字典中指定键值对,并返回该键值对的值

? ? ? ? ? dic.popitem()? #随机删除键值对,并以元组方式返回

其他操作涉及的方法:

dic1 =dict.formkeys(['host1','host2'],'test')#{'host1':'test','host2':'test'}

dic1 =dict.formkeys(['host1','host2','host3'],['test1','test2'])#{'host1':['test1','test2'],'host2':['test1','test2'],'host3':['test1','test2']}

dic1['host2'][1] = 'test3'? ?#{'host3':['test1''test3'],'host2':['test1''test3'],'host1':['test1''test3']}

? ? ? 字典的嵌套:

? ? ? 字典的排序:

? ? ? 字典的遍历:

字符串的操作

a = '123'

b= 'abc'

c = a+b #123abc

c='****'.join([a,b])#123****abc

st = 'hello kitty{name} is {age}'

? ? st.count('l')? ? #2? ? 统计元素个数

? ? ? st.captialize() #Hello kitty 首字母大写

? ? ? st.center(50,'-')#--------hello kitty --------居中

? ? ? st.endswith('tty3')#判断是否以某个内容结尾

? ? ? st.startswith('he')#判断是否以某个内容开头

? ? ? st.find('t') #8? 查找第一个元素,并返回索引,不存在是返回-1

? ? ? st.format(name? = 'alex',age= 37)#hello kitty alex is 37

? ? ? st.format_map({'name' :'alex','age':27})#hello kitty alex is 27

? ? ? st.index('t') #8 返回索引,找不到报错

‘ab'.isalnum()

'123'.isdigit()

Python 字典(dic)操作

具体函数有 set(),pop(),update(),items(),keys(),values(),get(),setdefault()

python 字典操作

假设字典为 dics = {0:'a', 1:'b', 'c':3}

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

print dics.get('a')

print dics.get('Paul')

None

dict.get(key,default=None) 两个选项 一个 key 一个 default= None ----default可以是任何strings(字符)

2.从字典中取值,若找到则删除;当键不存在时,显示异常key error

[方法]? dics.pop('key')

3.给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。

[方法] dic.setdefault(key, value)

4. update

a = {'a':1,'b':2}

a.update({'c':3})

a

{'a': 1,'c': 3,'b': 2}

a.update({'c':4})

a

{'a': 1,'c': 4,'b': 2}

dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。

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=男

Python字典创建、基本操作以及常用方法

创建一个空字典自需要一对大括号即可,从已有的键-值对映射或关键字参数创建字典需要使用 dict 函数(类)

把一个列表转为字典,列表的每一项都是长度为2的序列。

还可使用 关键字实参 (**kwargs)来调用这个函数,如下所示:

字典的基本操作与序列十分相似:

字典与序列的不同:

方法 clear 删除所有的字典项(key-value)。

复制,得到原字典的一个新副本。

效果等同于调用 dict(d) 创建新字典。

copy() 执行的是 浅复制 ,若字典的值是一个可变对象,那么复制以后,相同一个键将关联到同一个对象,修改该对象,将同时修改两个字典。

模块copy中的函数deepcopy 可执行深复制。

方法fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是None,或者可以提供一个i额默认值。

方法get 为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发错误,而get直接返回None,或者可设置默认返回值。

当字典中不存在指定键时, setdefault(k,v) 添加一个指定键-值对;且返回指定键所关联的值。

这三个方法返回值属于一种名为 字典视图 的特殊类型。字典视图可用于迭代。另外,还可确定其长度以及对其执行成员资格检查。

这三个方法自大的特点是不可变,当你的接口试图对其他用户提供一个只读字典,而不希望他们修改的时候,这三个方法是很有用的;而且当原字典发生改变时,这些方法返回的对象也会跟着改变。

方法 pop 可用于获取与指定键相关联的值,并将该键-值对从字典中删除。

popitem随机删除一个键-值对,并返回一个二维的元组 (key, value) ,因为字典是无序的,所以其弹出的顺序也是不确定的。

书上说,这个方法在大数据量时执行效率很高,但没有亲测。

方法update 使用一个字典中的项来更新另一个字典。

如何处理python的字典

一、创建字典

字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

也可如此创建字典

dict1 = { 'abc': 456 }

dict2 = { 'abc': 123, 98.6: 37 }

注意:

每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。

键必须独一无二,但值则不必。

值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。

二、访问字典里的值

把相应的键放入熟悉的方括弧,如下实例:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};print "dict['Name']: ", dict['Name'];print "dict['Age']: ", dict['Age'];#以上实例输出结果:#dict['Name']: ?Zara#dict['Age']: ?7

如果用字典里没有的键访问数据,会输出错误如下:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};print "dict['Alice']: ", dict['Alice'];

以上实例输出结果:

#KeyError: 'Alice'[/code]

三、修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

dict['Age'] = 8; # update existing entrydict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age'];print "dict['School']: ", dict['School'];#以上实例输出结果:#dict['Age']: ?8#dict['School']: ?DPS School

四、删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};del dict['Name']; # 删除键是'Name'的条目dict.clear(); ? ? # 清空词典所有条目del dict ; ? ? ? ?# 删除词典print "dict['Age']: ", dict['Age'];print "dict['School']: ", dict['School'];#但这会引发一个异常,因为用del后字典不再存在:dict['Age']:

python字典操作函数

字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一内建的映射类型,基本的操作包括如下:

(1)len():返回字典中键—值对的数量;

(2)d[k]:返回关键字对于的值;

(3)d[k]=v:将值关联到键值k上;

(4)del d[k]:删除键值为k的项;

(5)key in d:键值key是否在d中,是返回True,否则返回False。

(6)clear函数:清除字典中的所有项

(7)copy函数:返回一个具有相同键值的新字典;deepcopy()函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题

(8)fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None

(9)get函数:访问字典成员

(10)has_key函数:检查字典中是否含有给出的键

(11)items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表

(12)keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器

(13)pop函数:删除字典中对应的键

(14)popitem函数:移出字典中的项

(15)setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值

(16)update函数:用一个字典更新另外一个字典

(17)?values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素

一、字典的创建

1.1 直接创建字典

d={'one':1,'two':2,'three':3}

printd

printd['two']

printd['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

1.2 通过dict创建字典

# _*_ coding:utf-8 _*_

items=[('one',1),('two',2),('three',3),('four',4)]

printu'items中的内容:'

printitems

printu'利用dict创建字典,输出字典内容:'

d=dict(items)

printd

printu'查询字典中的内容:'

printd['one']

printd['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

items中的内容:

[('one',1), ('two',2), ('three',3), ('four',4)]

利用dict创建字典,输出字典内容:

{'four':4,'three':3,'two':2,'one':1}

查询字典中的内容:

或者通过关键字创建字典

# _*_ coding:utf-8 _*_

d=dict(one=1,two=2,three=3)

printu'输出字典内容:'

printd

printu'查询字典中的内容:'

printd['one']

printd['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

输出字典内容:

{'three':3,'two':2,'one':1}

查询字典中的内容:

二、字典的格式化字符串

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3,'four':4}

printd

print"three is %(three)s."%d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'four':4,'three':3,'two':2,'one':1}

threeis3.

三、字典方法

3.1?clear函数:清除字典中的所有项

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3,'four':4}

printd

d.clear()

printd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'four':4,'three':3,'two':2,'one':1}

{}

请看下面两个例子

3.1.1

# _*_ coding:utf-8 _*_

d={}

dd=d

d['one']=1

d['two']=2

printdd

d={}

printd

printdd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'two':2,'one':1}

{}

{'two':2,'one':1}

3.1.2

# _*_ coding:utf-8 _*_

d={}

dd=d

d['one']=1

d['two']=2

printdd

d.clear()

printd

printdd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'two':2,'one':1}

{}

{}

3.1.2与3.1.1唯一不同的是在对字典d的清空处理上,3.1.1将d关联到一个新的空字典上,这种方式对字典dd是没有影响的,所以在字典d被置空后,字典dd里面的值仍旧没有变化。但是在3.1.2中clear方法清空字典d中的内容,clear是一个原地操作的方法,使得d中的内容全部被置空,这样dd所指向的空间也被置空。

3.2?copy函数:返回一个具有相同键值的新字典

# _*_ coding:utf-8 _*_

x={'one':1,'two':2,'three':3,'test':['a','b','c']}

printu'初始X字典:'

printx

printu'X复制到Y:'

y=x.copy()

printu'Y字典:'

printy

y['three']=33

printu'修改Y中的值,观察输出:'

printy

printx

printu'删除Y中的值,观察输出'

y['test'].remove('c')

printy

printx

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

初始X字典:

{'test': ['a','b','c'],'three':3,'two':2,'one':1}

X复制到Y:

Y字典:

{'test': ['a','b','c'],'one':1,'three':3,'two':2}

修改Y中的值,观察输出:

{'test': ['a','b','c'],'one':1,'three':33,'two':2}

{'test': ['a','b','c'],'three':3,'two':2,'one':1}

删除Y中的值,观察输出

{'test': ['a','b'],'one':1,'three':33,'two':2}

{'test': ['a','b'],'three':3,'two':2,'one':1}

注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改。deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。

# _*_ coding:utf-8 _*_

fromcopyimportdeepcopy

x={}

x['test']=['a','b','c','d']

y=x.copy()

z=deepcopy(x)

printu'输出:'

printy

printz

printu'修改后输出:'

x['test'].append('e')

printy

printz

运算输出:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

输出:

{'test': ['a','b','c','d']}

{'test': ['a','b','c','d']}

修改后输出:

{'test': ['a','b','c','d','e']}

{'test': ['a','b','c','d']}

3.3?fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None

# _*_ coding:utf-8 _*_

d=dict.fromkeys(['one','two','three'])

printd

运算输出:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':None,'two':None,'one':None}

或者指定默认的对应值

# _*_ coding:utf-8 _*_

d=dict.fromkeys(['one','two','three'],'unknow')

printd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':'unknow','two':'unknow','one':'unknow'}

3.4?get函数:访问字典成员

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

printd.get('one')

printd.get('four')

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

1

None

注:get函数可以访问字典中不存在的键,当该键不存在是返回None

3.5?has_key函数:检查字典中是否含有给出的键

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

printd.has_key('one')

printd.has_key('four')

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

True

False

3.6?items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

list=d.items()

forkey,valueinlist:

??printkey,':',value

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

three :3

two :2

one :1

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

it=d.iteritems()

fork,vinit:

??print"d[%s]="%k,v

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

d[three]=3

d[two]=2

d[one]=1

3.7?keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

printu'keys方法:'

list=d.keys()

printlist

printu'\niterkeys方法:'

it=d.iterkeys()

forxinit:

??printx

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

keys方法:

['three','two','one']

iterkeys方法:

three

two

one

3.8?pop函数:删除字典中对应的键

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

d.pop('one')

printd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

{'three':3,'two':2}

3.9?popitem函数:移出字典中的项

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

d.popitem()

printd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':1}

{'two':2,'one':1}

3.10?setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

printd

printd.setdefault('one',1)

printd.setdefault('four',4)

printd

运算结果:

{'three':3,'two':2,'one':1}

{'four':4,'three':3,'two':2,'one':1}

3.11?update函数:用一个字典更新另外一个字典

# _*_ coding:utf-8 _*_

d={

??'one':123,

??'two':2,

??'three':3

??}

printd

x={'one':1}

d.update(x)

printd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three':3,'two':2,'one':123}

{'three':3,'two':2,'one':1}

3.12?values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素

# _*_ coding:utf-8 _*_

d={

??'one':123,

??'two':2,

??'three':3,

??'test':2

??}

printd.values()

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

[2,3,2,123]

(责任编辑:IT教学网)

更多

推荐SQL Server文章