在Python中从集合中选择项

2024-05-16 00:55:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个集合中选择一个项目。它是哪一项并不重要,但我希望每次调用函数时它都是同一项。

例如,如果我有一套:

my_set = set(["ABC","ABC inc", "ABC ltd"])

然后我想返回其中任何一个,但在函数运行时返回同一个。[也就是说,每当我运行上述集合时,我总是得到“ABC”,或者总是得到“ABC inc”。]如果我使用的是列表,我只取第一个项目,但集合本身没有第一个项目。

这与随机选择(例如How do I pick 2 random items from a Python set?)相反,每次运行时,它都会更改。


Tags: 项目函数from列表myitemsrandomdo
3条回答

我可能误解了你的问题,但如果你想找什么具体的东西的话,检查一下你的会员资格就行了。

letter_set = set(['abc','ABC','xyz','XYZ'])
check_string = 'ABC'
if check_string in letter_set:
    output = check_string

只有当所需字符串在集合中时,才应该给出输出值。

你可以用记忆功能

def get_random(my_set,memo={}):
    if id(my_set) not in memo:
       memo[id(my_set)] = random.choice(list(my_set))
    return memo[id(my_set)]

a_set = set([1,2,3,4,5])
print get_random(a_set)
print get_random(a_set)

只要您传入a_set,这将始终为您提供相同的值。。。(不同的一套会给出不同的答案)

如果你想确定这个项目仍然在设置中,你可以更改备忘录如果检查

def get_random(my_set,memo={}):
    if id(my_set) not in memo or memo[id(my_set)] not in my_set:
       memo[id(my_set)] = random.choice(list(my_set))
    return memo[id(my_set)]

转换成列表和排序怎么样?

my_list = list(my_set)
my_list.sort()
chosen_element = my_list[0]

相关问题 更多 >