我想为搁置键值存储创建一个迭代器,该迭代器可以多次使用,但每次都以不同的顺序返回值。搁置迭代器以随机顺序返回值,但每次调用时顺序不会改变。这是一个例子:
进口货架
# store key-value pairs with shelve
d = shelve.open('kv_store')
kv = {'a': 9, 'b': 8, 'c': 7, 'd': 6}
for key in kv.keys():
d[str(key)] = kv[key]
d.close()
# create iterator for key-value store
d = shelve.open('kv_store')
iterator = iter(d)
for i in iterator:
print(i)
d.close()
> b
> d
> a
> c
# repeat create iterator for key-value store
d = shelve.open('kv_store')
iterator = iter(d)
for i in iterator:
print(i)
d.close()
> b
> d
> a
> c
如何让搁置迭代器每次以不同的顺序返回值(例如使用 random.shuffle)?
最佳答案
如果你想调用 shuffle,你需要将迭代器设为列表:
iterator = list(d)
shuffle(iterator)
shuffle
需要一个列表,因此您需要通过 d
上的调用列表将其传递给它以获取键列表。
您也不需要调用 iter
除非您确实想要一个迭代器,您可以只迭代 d
。
关于Python 搁置和随机迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369772/