使用标准库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']