百科狗-知识改变命运!
--

python 字典操作方法详解

是丫丫呀1年前 (2023-11-21)阅读数 28#技术干货
文章标签字典

字典是一种通过名字或者关键字引用的得数据结构,key类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。

注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

一、字典的键不能是list类型:

list=[1,2,3,4]

info2={list:'number'}

结果:

Traceback(mostrecentcalllast):

File"D:/字典.py",line2,in

info2={list:'number'}

TypeError:unhashabletype:'list'

二、list/set/dict均不可被哈希,int、float、str、tuple:是可以哈希的

1list.__hash__;

#结果为None

2set.__hash__;

#结果为None

3dict.__hash__;

#结果为None

4print(int.__hash__);

#

5print(float.__hash__);

#

6print(str.__hash__);

#

7print(tuple.__hash__);

#

三、增

info={'name':'jamnes','age':'32','work':'basketplayer'}

info['sex']='fale'

print(info)

结果:

{'name':'jamnes','age':'32','work':'basketplayer','sex':'fale'}

四、删

4-1pop():删除指定key的键值对

nfo={'name':'jamnes','age':'32','work':'basketplayer'}

info.pop('work')

print(info)

结果:

{'name':'jamnes','age':'32'}

4-2clear():清除所有的键值对

info={'name':'jamnes','age':'32','work':'basketplayer'}

info.clear()

print(info)

结果:

{}

4-3setdefault():删除指定的元素,如果没有,则返回none

info={'name':'jamnes','age':'32','work':'basketplayer'}

info.setdefault('son')

print(info)

结果:

None

五、改

info={'name':'jamnes','age':'32','work':'basketplayer'}

info['age']='33'

print(info)

结果:

{'name':'jamnes','age':'33','work':'basketplayer'}

六、查

6-1get():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None

info={'name':'jamnes','age':'32','work':'basketplayer'}

a=info.get('age')

print(a)

结果:

32

6-2setdefault():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,

同时在字典中增加'test':None键值对

info={'name':'jamnes','age':'32','work':'basketplayer'}

a=info.setdefault('age')

print(a)

print(info)

b=info.setdefault('sex')

print(b)

print(info)

结果:

32

{'name':'jamnes','age':'32','work':'basketplayer'}

None

{'name':'jamnes','age':'32','work':'basketplayer','sex':None}

七、更新

7-1update()=

一,更新里面有的信息,就是改变

info={'name':'jamnes','age':'32','work':'basketplayer'}

info2={'name':'wade','age':'33','work':'basketplayer'}

info.update(info2)

print(info)

结果:

{'name':'wade','age':'33','work':'basketplayer'}

二,更新里面没有的信息,就是添加

info={'name':'jamnes','age':'32','work':'basketplayer'}

info2={'honor':'3champions'}

info.update(info2)

print(info)

结果:

{'name':'jamnes','age':'32','work':'basketplayer','honor':'3champions'}

八、返回键,值,键值对

keys():以列表(list)返回字典中的所有键(key),字典是无序的,所以这个list返回的不是定义字典的顺序

values():以列表(list)返回字典中的所有值,这个list的顺序跟keys()返回的list顺序是一一对应的

items():以列表(list)返回可遍历的(键,值)元组数组,这个tuple的list包含了dictionary的所有数据

dict={'k1':'v1','k2':'v2','k3':'v3'}

#1,请循环遍历除所有的key

forkeysindict.keys():

print(keys)

#遍历出所有的value

forvalueindict.values():

print(value)

#遍历出

forkey,valueindict.items():

print(key+':'+value)

#结果:

k1

k2

k3

v1

v2

v3

k1:v1

k2:v2

k3:v3

九、练习字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

a.请循环输出所有的key

b.请循环输出所有的value

c.请循环输出所有的key和value

d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典

f.请在k3对应的值中追加一个元素44,输出修改后的字典

python 字典操作方法详解

g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

#a.请循环输出所有的key

foriindic:

print(i)

foriindic.keys():

print(i)

#b.请循环输出所有的value

foriindic.values():

print(i)

c.请循环输出所有的key和value

fori,jindic.items():

print(i,j)

#d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

dic2={'k4':'v4'}

dic.update(dic2)

print(dic)

dic['k4']='v4'

print(dic)

#e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典

dic['k1']='alex'

print(dic)

f.请在k3对应的值中追加一个元素44,输出修改后的字典

dic['k3'].append(44)

print(dic)

#g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

dic['k3'].insert(0,18)

print(dic)

十、根据字典的键值进行排序

反序:reverse=True

mylist=['学习','工作','玩耍','学习','工作','工作']

print(mylist)

#list_element是另外一个列表,里面的内容是list_element里面的无重复项

myset=set(mylist)

mydict={}

foriteminmyset:

res=mylist.count(item)

sample={item:res}

#print(res)

#print("the%dhasfound%d"%(item,mylist.count(item)))

mydict.update(sample)

print(mydict)

print(sorted(mydict.items(),key=lambdamydict:mydict[1],reverse=True))

十一、OrderedDict的使用

在Python中,dict这个数据结构由于hash的特性,是无序的,这在有时候会给我们带来一些麻烦,幸运的时,在collections模块中为我们提供了OrderedDict,当你需要获取一个有序的字典对象时,试用它即可。

python中的字典(dict)对象可使用“键”,“值”对的形式存取值,但默认的内置类型字典中的元素是无序的。Collections模块下的OrderedDict类实现了对字典的排序,OrderedDict是dict的一个子类,实现了对字典排序的功能,下面看一下两者数据类型的对比。

fromcollectionsimportOrderedDict

print('NormalDictionary:')

d={}

d['name']='v1'

d['age']='v2'

d['job']='v3'

d['address']='v4'

d1={}

d1['job']='v3'

d1['address']='v4'

d1['name']='v1'

d1['age']='v2'

print(d)

print(d1)

print(d==d1)

print('OrderedDict:')

d2=OrderedDict()

d2['name']='v1'

d2['age']='v2'

d2['job']='v3'

d3=OrderedDict()

d3['job']='v3'

d3['age']='v2'

d3['name']='v1'

print(d2)

print(d3)

print(d2==d3)

输出结果:

NormalDictionary:

{'name':'v1','age':'v2','job':'v3','address':'v4'}

{'job':'v3','address':'v4','name':'v1','age':'v2'}

True

OrderedDict:

OrderedDict([('name','v1'),('age','v2'),('job','v3')])

OrderedDict([('job','v3'),('age','v2'),('name','v1')])

False

从结果来看,如果是普通的字典,即使传入的顺序不一样,但是依然是相同的字典;如果是OrderedDict,传入的顺序不一样,那么得到的字典是不一样的。

以上内容为大家介绍了python字典操作方法详解,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)