如何让字典保持有序

亡梦爱人 提交于 2019-12-04 21:17:56

使用标准库collections中的OrderedDict

以OrderedDict替代内置字典Dict,依次将选手成绩存入OrderedDict

from collections import OrderedDict
od = OrderedDict()
od['c'] = 1
od['b'] = 2
od['a'] = 3
list(iter(od))

执行结果:

['c', 'b', 'a']
from collections import OrderedDict
od = OrderedDict()
# 制造数据
players = list('abcdefgh')
from random import shuffle
shuffle(players) #洗牌函数,将列表打乱
for i, p in enumerate(players, 1):
    od[p] = i

def query_by_name(d, name):
    return d[name]

query_by_name(od, 'e') #查询e的名次

from itertools import islice #为可迭代对象制作切片
def query_by_order(d, a, b = None):
    a -= 1
    if b is None:
        b = a + 1
    return list(islice(od, a, b))

print(od)
query_by_order(od, 4, 6)

执行结果:

OrderedDict([('f', 1), ('h', 2), ('a', 3), ('e', 4), ('d', 5), ('c', 6), ('b', 7), ('g', 8)])
['e', 'd', 'c']
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!