当前位置: 首页 > 编程笔记 >

Python OrderedDict字典排序方法详解

白通
2023-03-14
本文向大家介绍Python OrderedDict字典排序方法详解,包括了Python OrderedDict字典排序方法详解的使用技巧和注意事项,需要的朋友参考一下

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

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

import collections
print "Regular dictionary"
d={}
d['a']='A'
d['b']='B'
d['c']='C'
for k,v in d.items():
  print k,v

print "\nOrder dictionary"
d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['1'] = '1'
d1['2'] = '2'
for k,v in d1.items():
  print k,v

输出:
Regular dictionary
a A
c C
b B

Order dictionary
a A
b B
c C
1 1
2 2

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

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

print 'Regular dictionary:'
d2={}
d2['a']='A'
d2['b']='B'
d2['c']='C'

d3={}
d3['c']='C'
d3['a']='A'
d3['b']='B'

print d2 == d3

print '\nOrderedDict:'
d4=collections.OrderedDict()
d4['a']='A'
d4['b']='B'
d4['c']='C'

d5=collections.OrderedDict()
d5['c']='C'
d5['a']='A'
d5['b']='B'

print d1==d2

输出:
Regular dictionary:
True

OrderedDict:
False

再看几个例子:

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

#输出
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java经典排序算法之归并排序详解,包括了Java经典排序算法之归并排序详解的使用技巧和注意事项,需要的朋友参考一下 一、归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归

  • 问题 你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序。 解决方案 为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。 在迭代操作的时候它会保持元素被插入时的顺序,示例如下: from collections import OrderedDict d = OrderedDict() d['foo'] = 1 d['bar

  • 本文向大家介绍Java经典排序算法之二分插入排序详解,包括了Java经典排序算法之二分插入排序详解的使用技巧和注意事项,需要的朋友参考一下 一、折半插入排序(二分插入排序) 将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法。在处理A[i]时,A[0]……A[i-1]已经按关键码值排好序。所谓折半比较,就是在插入A[i]时,取A[i-1/2]的关键码值与A[i]

  • 本文向大家介绍详解python的sorted函数对字典按key排序和按value排序,包括了详解python的sorted函数对字典按key排序和按value排序的使用技巧和注意事项,需要的朋友参考一下 1.sorted函数按key值对字典排序 先来基本介绍一下sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三

  • 冒泡排序 令 n = array.length;共n次排序;每次排序比较相邻的两个的大小,并确保大的在右边。第一遍排序后,可以确保最大的在第【n】位,第二遍排序可以确保剩下的n-1个元素中最大(整体中的第二大)的在第【n - 1】位;n次排序后,第n大的在n - n位,也就是最小的排到了最左边。 function bubbleSort(ary) { var i = ary.

  • 本文向大家介绍python 使用值来排序一个字典的方法,包括了python 使用值来排序一个字典的方法的使用技巧和注意事项,需要的朋友参考一下 下面先看下python 使用值排序字典的方法 sort 方法会就地排序列表,不会把原列表复制一份 sorted 会新建一个列表作为返回值,接受任何形式的可迭代对象作为参数 sorted 和 sort的可选参数:   reverse  默认为False,如果