访问集合的唯一元素

时间:2013-12-17 03:47:46

标签: python set

我在Python中有一个set,我将根据条件逐个删除元素。当集合只剩下1个元素时,我需要返回该元素。如何从集合中访问此元素?

简化示例:

S = set(range(5))
for i in range(4):
    S = S - {i}
# now S has only 1 element: 4
return ? # how should I access this element
# a lame way is the following
# for e in S:
#    return S

6 个答案:

答案 0 :(得分:27)

使用set.pop

>>> {1}.pop()
1
>>>

在你的情况下,它将是:

return S.pop()

但请注意,这将从集合中删除该项目。如果这是不受欢迎的,您可以使用min | max

return min(S) # 'max' would also work here

演示:

>>> S = {1}
>>> min(S)
1
>>> S
set([1])
>>> max(S)
1
>>> S
set([1])
>>> 

答案 1 :(得分:26)

我会用:

e = next(iter(S))

这是非破坏性的,即使集合中有多个元素也能正常工作。更好的是,它可以选择提供默认值e = next(iter(S), default)

你也可以使用解包:

[e] = S

解包技术可能是最快的方法,它包括错误检查以确保集合只有一个成员。缺点是它看起来很奇怪。

答案 2 :(得分:2)

对不起,迟到了。要从集合中访问元素,您始终可以将集合转换为列表,然后可以使用索引来返回所需的值。

就你的例子而言:

return list(S)[0]

答案 3 :(得分:1)

一种方法是:value=min(set(['a','b','c'))产生'a'。显然,您可以改用max

答案 4 :(得分:0)

您可以使用star operation将最后一个元素分配给变量。

>>> a={"fatih"}
>>> b=str(*a)
>>> b
'fatih'

现在变量b有一个string object

如果唯一的元素是数字,您可以使用int()

>>> a={1}
>>> c=int(*a)
>>> c
1

答案 5 :(得分:0)

  1. 集合是无序集合,没有重复的元素。

  2. 基本用途包括成员资格测试和消除重复条目。

  3. Set对象还支持联合,相交,差分和对称差分之类的数学运算。

  4. 要创建一个空集,您必须使用set()而不是{}; 后者会创建一个空字典,这是我们将在下一节中讨论的数据结构。

  5. 以添加/降序对集合进行排序->返回已排序元素的列表,不更改集合

    sorted(basket)#升序排列 sorted(basket,reverse = True)#降序

要获取集合的x元素或从排序的集合中获取元素

list(basket)[x] or sorted(basket)[x] 

注意:set是无序集合,因此您可以使用以下代码从已排序的集合中获取x元素