首页 文章资讯内容详情

python中OrderedDict的使用

2026-06-01 3 花语

本文内容纲要:

很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类

OrderedDict,实现了对字典对象中元素的排序。请看下面的实例:

1importcollections 2print"Regulardictionary" 3d={} 4d[a]=A 5d[b]=B 6d[c]=C 7fork,vind.items(): 8printk,v 9 10print"\nOrderdictionary" 11d1=collections.OrderedDict() 12d1[a]=A 13d1[b]=B 14d1[c]=C 15d1[1]=1 16d1[2]=2 17fork,vind1.items(): 18printk,v 19 20输出: 21Regulardictionary 22aA 23cC 24bB 25 26Orderdictionary 27aA 28bB 29cC 3011 3122

可以看到,同样是保存了ABC等几个元素,但是使用OrderedDict会根据放入元素的先后顺序进行排序。所以输出的值是排好序的。

OrderedDict对象的字典对象,如果其顺序不同那么Python也会把他们当做是两个不同的对象,请看事例:

1printRegulardictionary: 2d2={} 3d2[a]=A 4d2[b]=B 5d2[c]=C 6 7d3={} 8d3[c]=C 9d3[a]=A 10d3[b]=B 11 12printd2==d3 13 14print\nOrderedDict: 15d4=collections.OrderedDict() 16d4[a]=A 17d4[b]=B 18d4[c]=C 19 20d5=collections.OrderedDict() 21d5[c]=C 22d5[a]=A 23d5[b]=B 24 25printd1==d2 26 27输出: 28Regulardictionary: 29True 30 31OrderedDict: 32False

再看几个例子:

dd={banana:3,apple:4,pear:1,orange:2} #按key排序 kd=collections.OrderedDict(sorted(dd.items(),key=lambdat:t[0])) printkd #按照value排序 vd=collections.OrderedDict(sorted(dd.items(),key=lambdat:t[1])) printvd #输出 OrderedDict([(apple,4),(banana,3),(orange,2),(pear,1)]) OrderedDict([(pear,1),(orange,2),(banana,3),(apple,4)])

本文内容总结:

原文链接:https://www.cnblogs.com/gide/p/6370082.html