快捷搜索: 王者荣耀 脱发

Python——有序字典 (OrderedDict)

有序字典 (OrderedDict)

    读取数据创建n个键值对,将其排序后放入有序字典并输出。 有序字典 (OrderedDict)
有序字典和普通的dict基本上是相似的,只有一点不同,那就是有序字典中键值对的顺序会保留插入时的顺序。
    创建有序字典
有序字典的创建方法和普通的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类型)的第一个元素和第二个元素。

修改顺序

有序字典提供了一个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)])

编程要求

函数功能: 创建字典 读取n(n>0)行输入,以每一行的数据为key 行号(从0开始)为value,建立n对键值对 将他们按照key排序后,放入一个有序字典 输出这个有序字典。

测试说明

测试输入:
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)])

上代码:

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

经验分享 程序员 微信小程序 职场和发展