写点什么

Python——有序字典 (OrderedDict)

用户头像
在即
关注
发布于: 2021 年 06 月 22 日
Python——有序字典 (OrderedDict)

有序字典 (OrderedDict)


  • 读取数据创建 n 个键值对,将其排序后放入有序字典并输出。

  • 有序字典 (OrderedDict)

有序字典和普通的 dict 基本上是相似的,只有一点不同,那就是有序字典中键值对的顺序会保留插入时的顺序。


1.创建有序字典

有序字典的创建方法和普通的 dict 类似,不过由于多了保留顺序的功能,因此在使用可迭代对象创建有序字典时,可以对它先排个序,让创建出来的字典元素也是有序的:

data = [('a',1),('b',3),('c',2)]

#按数据中 key 值的大小排序

od = collections.OrderedDict(sorted(data,key=lambda s:s[0]))

print(od)

#按数据中 value 值的大小排序

od = collections.OrderedDict(sorted(data,key=lambda s:s[1]))

print(od)

得到的结果:

OrderedDict([('a', 1), ('b', 3), ('c', 2)])

OrderedDict([('a', 1), ('c', 2), ('b', 3)])

这里使用的 sorted 函数,它返回对一个可迭代对象排序后的结果,如果可迭代对象的元素不能直接进行比较(比如元素是一个 list 或 tuple 等),则需要指定 key 函数。

这里使用 lambda 表达式 lambda s:s[0]和 lambda s:s[1],分别指定 key 为 data 中每个元素(tuple 类型)的第一个元素和第二个元素。

2.修改顺序

有序字典提供了一个 move_to_end 函数,这个函数可以将指定的键值对移动到最前面或者最后面,即最左边或最右边:

dt = collections.OrderedDict()

dt['a'] = 0

dt['b'] = 1

dt['c'] = 2

dt.move_to_end('b',last = False) #将`b`键值对移动到最前方

print(dt)

dt.move_to_end('b',last = True) #将`b`键值对移动到最后方

print(dt)


得到的结果:

OrderedDict([('b', 1), ('a', 0), ('c', 2)])

OrderedDict([('a', 0), ('c', 2), ('b', 1)])


编程要求

函数功能:

  1. 创建字典

  2. 读取 n(n>0)行输入,以每一行的数据为 key

  3. 行号(从 0 开始)为 value,建立 n 对键值对

  4. 将他们按照 key 排序后,放入一个有序字典

  5. 输出这个有序字典。

测试说明

测试输入:

3

a

c

b

预期输出:

OrderedDict([('a', 0), ('b', 2), ('c', 1)])


测试输入:

4

A

B

D

C

预期输出:

OrderedDict([('A', 0), ('B', 1), ('C', 3), ('D', 2)])

代码:

//如注释理解有误,请大佬们多多评论指教!!

发布于: 2021 年 06 月 22 日阅读数: 4
用户头像

在即

关注

记录学习进度 2021.02.27 加入

一个入门小白白!

评论

发布
暂无评论
Python——有序字典 (OrderedDict)