Python 使用变量确定要打印集合中的哪个值

Python 使用变量确定要打印集合中的哪个值,python,python-3.x,Python,Python 3.x,我正在寻找一段python代码的帮助,这段代码是我为了好玩而编写的,麻烦的代码是: v = randint(1,7) if v != 7: d = randint(1,5) if d == 1: print(vdset[v], file=text_file) 我的目标是使用randint从我的集合中选择一个随机值,但是,当运行时,我得到一个错误,即“set”对象不支持索引。我想我需要用别的东西来代替我对集合的使用,但我不确定该怎么做。问题是集合是唯一元素的无序集

我正在寻找一段python代码的帮助,这段代码是我为了好玩而编写的,麻烦的代码是:

v = randint(1,7)
if v != 7:
    d = randint(1,5)
    if d == 1:
        print(vdset[v], file=text_file)

我的目标是使用randint从我的集合中选择一个随机值,但是,当运行时,我得到一个错误,即
“set”对象不支持索引。我想我需要用别的东西来代替我对集合的使用,但我不确定该怎么做。

问题是集合是唯一元素的无序集合。您应该了解一下Python:

您可以尝试:

v = randint(1,7)
    if v != 7:
        d = randint(1,5)
        if d == 1:
            print(list(vdset)[v], file=text_file)
你也可以使用。这与集合不支持索引但您可以简单地将集合转换为列表(支持索引)的问题相同


集合未排序,因此无法对其编制索引。您可以改为使用列表。顺便说一下,从序列中选择随机元素最好使用
random.choice()
。但是,您仍然需要一个列表或元组。如果您真的与'vdset`@ShawnMehan结婚,您可以
list(vdset)[v]
:在这一点上,顺序将在很大程度上取决于插入和删除历史。但对于随机选择,这可能不是太糟糕。使用list(vdset)[v]或只是将我的原始集更改为list会给我一个新的错误;“对已关闭文件的I/O操作。”
>>> from random import choice
>>> my_set = {1, 3, 2, 7, 5, 4}
>>> choice(my_set)
Traceback (most recent call last):
...
TypeError: 'set' object does not support indexing
>>> choice(list(my_set))
3