python 有序字典_python 实现有序字典

python 实现有序字典

Python默认的字典,是不按顺序存储、输出我们添加在字典中的内容的,即是无序的字典。python 使用OrderedDict函数实现有序的字典。

示例:

d = dict([("a",1),("b",2),("c",3),("d",5),("e",6)])

print (d)

# {'e': 6, 'c': 3, 'd': 5, 'a': 1, 'b': 2}

print (d)

# {'b': 2, 'a': 1, 'd': 5, 'c': 3, 'e': 6}

实现有序字典

from collections import OrderedDict

od = OrderedDict([("a",1),("b",2),("c",3),("d",5),("e",6)])

print (od)

# OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 5), ('e', 6)])

print (od)

# OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 5), ('e', 6)])

有序的字典记住它的成员插入的顺序,可以使用排序函数,将其变为排序的字典

from collections import OrderedDict

d = {"banana":3,"apple":2,"pear":1,"orange":4}

od1 = OrderedDict(sorted(d.items(),key = lambda t : t[0]))

print (od1)

# OrderedDict([('apple', 2), ('banana', 3), ('orange', 4), ('pear', 1)])

od2 = OrderedDict(sorted(d.items(),key=lambda t : t[1]))

print (od2)

# OrderedDict([('pear', 1), ('apple', 2), ('banana', 3), ('orange', 4)])

od3 = OrderedDict(sorted(d.items(),key=lambda t : len(t[0])))

print (od3)

# OrderedDict([('pear', 1), ('apple', 2), ('orange', 4), ('banana', 3)])

模拟某竞赛系统,对参赛选手编程解题进行计时,选手完成题目后,把该选手的解题时间记录到字典中,以便赛后方便选手查询成绩(答题用时短,成绩优秀)

"""

使用collections 模块下的 OrderedDict 函数 实现有序的字典

"""

import pprint

import time

from collections import OrderedDict

from random import randint

players = list("ABCDEFGHJK") # 模拟10个选手

start = time.time() # 设置开始时间

d = OrderedDict()

for i in range(10):

input("按 Enter 表示有选手完成答题:")

p = players.pop(randint(0,9-i))

end = time.time()

print("%s完成答题,第%s名,用时%s"%(p,i+1,end - start))

d[p] = (p,i+1,end-start)

pprint.pprint(d)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值