实际案例:

   某编程竞赛系统,对参赛选手编程解体进行计时,选手完成题目后,吧该选手解体用时记录到字典中,以便赛后按选手名查询成绩

  {'Lilei':(2,43),'HanMei':(5,52),'Jim':(1,39)...}

比赛结束后,需按排名顺序依次打印选手成绩, 如何实现?

from collections import OrderedDict
# shuffle 洗牌函数, 可以将列表的次序打乱
from random import shuffle '''
使用标准库 collections 中的 OrderedDict
以 OrderedDict 替代字典 Dict, 依次将选手成绩存入 OrderedDict
''' players = list('abcdefgh')
shuffle(players)
print(players)
# ['c', 'b', 'd', 'a', 'f', 'e', 'h', 'g']
od = OrderedDict()
# 简单模拟,排名次序
for i, p in enumerate(players, 1):
od[p] = i
print(od)
# OrderedDict([('b', 1), ('a', 2), ('f', 3), ('c', 4), ('d', 5), ('g', 6), ('h', 7), ('e', 8)])
# 编写接口-根据名字查询成绩 def query_by_name(d, name):
# 根据键-取值
return d[name] # 测试 -根据键 取值 --即根据名字-取成绩
print(query_by_name(od, 'c'))
print(query_by_name(od, 'b'))
'''
根据 次序-查询 名字, 或者根据 范围, 查询名字
iter(od) 不支持切片和索引操作
在迭代工具 itertoools 中, 引入 islice 进行切片
'''
from itertools import islice
# islice 工作原理: 依次迭代前面可迭代对象
# 例子-- 从0开始迭代,范围外的值舍去
isTest = islice(range(10), 3, 6)
print(list(isTest))
# [3, 4, 5]
isOd = islice(od, 3, 6)
print(list(isOd))
# ['e', 'h', 'a'] # 根据排名value,查询键key
def query_by_order(d, a, b=None):
a -= 1
# 如果只想查询 一个数据
if b is None:
# b=a+1,说明只取到a 即(a,a+1)
b = a+1
return list(islice(od, a, b)) # 测试
print(query_by_order(od, 4))
print(query_by_order(od, 3, 6))
# ['g']
# ['c', 'g', 'f', 'e']

 上述解题思路,基于python3.5

python3.6中,内置字典dict的行为已经与 OrderedDict一致,使用dict即可

 但为了代码兼容,建议还是使用 OrderedDict函数进行.

最新文章

  1. jsp中如何判断el表达式中的BigDecimal==0
  2. centos 7.0 查看内存使用情况 和 查看硬盘使用情况
  3. 29 GroupSock(NetAddressList)——live555源码阅读(四)网络
  4. android 开发进阶 自定义控件-仿ios自动清除控件
  5. LeetCode Binary Tree Level Order Traversal II (二叉树颠倒层序)
  6. Centos中安装vim
  7. 修改UILabel的行间距
  8. 内嵌W5100的网络模块WIZ812MJ--数据手册
  9. shell变量$(CURDIR),$0,$1,$2,$#含义解释
  10. Vue的移动端多图上传插件vue-easy-uploader
  11. Fluent动网格【8】:网格节点运动案例
  12. Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
  13. 【java】之查看JVM参数的值
  14. Javascript富文本编辑器
  15. 简单部署iRedMail-0.9.8 - 邮件服务器架构和错误代码
  16. html5 自带全屏API调用方法
  17. Alert Messager
  18. 简单理解C#中的抽象工厂模式是什么概念!
  19. 1039 Course List for Student
  20. 用 Apache POI 读取 XLSX 数据

热门文章

  1. Windows Neovim
  2. The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team (线段树)
  3. centos7系统时间修复
  4. 一文了解kudu【转载】
  5. 36.React基础介绍——2019年12月24日
  6. java -cp与java -jar的区别
  7. F5设备部署
  8. Spring源码构建
  9. css3中的过渡效果和动画效果
  10. Leetcode 8. String to Integer (atoi)(模拟题,水)