如何从frozenset中获取任意元素?


问题内容

我想从中获取一个元素frozenset(当然,无需修改它,因为frozensets是不可变的)。到目前为止,我发现的最佳解决方案是:

s = frozenset(['a'])
iter(s).next()

按预期返回:

'a'

换句话说,有什么方法可以从a中“弹出”一个元素frozenset而不实际弹出它?


问题答案:

(总结评论中给出的答案)

您的方法与任何方法一样好,但要注意,从Python 2.6开始,您应该使用next(iter(s))而不是iter(s).next()

如果要使用 随机 元素而不是 任意 元素,请使用以下命令:

import random
random.sample(s, 1)[0]

以下是一些示例,展示了两者之间的区别:

>>> s = frozenset("kapow")
>>> [next(iter(s)) for _ in range(10)]
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']



>>> import random
>>> [random.sample(s, 1)[0] for _ in range(10)]
['w', 'a', 'o', 'o', 'w', 'o', 'k', 'k', 'p', 'k']