我有一个 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?