2-6如何让字典保持有序
1、实现方法
Dict字典是无序的,collections模块下的OrderedDict是有序的字典,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
>>> d = {} >>> d['lilei'] = 18 >>> d['hanmeimei'] = 16 >>> d['jim'] = 17 >>> >>> d {'lilei': 18, 'jim': 17, 'hanmeimei': 16} >>> from collections import OrderedDict >>> d = OrderedDict() >>> d['lilei'] = 18 >>> d['hanmeimei'] = 16 >>> d['jim'] = 17 >>> d OrderedDict([('lilei', 18), ('hanmeimei', 16), ('jim', 17)])
测试本例方法:

from collections import OrderedDict from time import time from random import randint plears = list('ABCDEFGH') start = time() d = OrderedDict() for i in xrange(8): raw_input() #阻塞函数输入任意键后,继续执行 end = time() #获得此时时间 p = plears.pop(randint(0,7-i)) #i从0迭代到7,随机弹出一个,每弹出后,列表长度减少1,randint()生成的随机位置也应该减少一个 d[p] = (i+1,end-start) #i+1,序号让从1开始 print(i+1,p,end-start) print("*"*20) #输出分割线 for i in d: #将有序字典中,迭代输出 print(i,d[i])
执行输出
(1, 'E', 1.4719998836517334)
(2, 'G', 1.8449997901916504)
(3, 'D', 2.181999921798706)
(4, 'F', 2.503999948501587)
(5, 'A', 2.8219997882843018)
(6, 'B', 3.132999897003174)
(7, 'C', 3.4670000076293945)
(8, 'H', 3.7789998054504395)
********************
('E', (1, 1.4719998836517334))
('G', (2, 1.8449997901916504))
('D', (3, 2.181999921798706))
('F', (4, 2.503999948501587))
('A', (5, 2.8219997882843018))
('B', (6, 3.132999897003174))
('C', (7, 3.4670000076293945))
('H', (8, 3.7789998054504395))
posted on 2018-04-02 11:27 石中玉smulngy 阅读(200) 评论(0) 收藏 举报