【发布时间】:2014-05-24 20:13:24
【问题描述】:
我有一个 OrderedDict 想像这样洗牌:
od = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
random.shuffle(od)
不幸的是,这不起作用(python3),并引发了KeyError: 0 异常。
我正在使用的替代方法是转换为列表、随机播放并重建 OrderedDict:
od_tmp = list(od.items())
random.shuffle(od_temp)
od = OrderedDict(od_tmp)
由于 OrderedDict 有一个订单,所以能够直接对其进行排序似乎是合理的。转换为列表效率低下。
问题是:
- 有比上述解决方案更好的方法吗? (不诉诸仅使用列表)
- 为什么我不能随机播放 OrderedDict?
【问题讨论】:
标签: python-3.x shuffle ordereddictionary