假设如下:
>>> s = set([1, 2, 3])
如何在不使用 s.pop()
的情况下从 s
中获取一个值(任意值)?我想在确认可以将其删除之前保留集合中的项目 - 这只有在对另一个主机进行异步调用后才能确定。
简单粗暴:
>>> elem = s.pop()
>>> s.add(elem)
你知道更好的方法吗?最好是常数时间。
对于小的集合,我通常会创建一种解析器/转换器方法,类似于以下内容:
def convertSetToList(setName):
return list(setName)
userFields = convertSetToList(user)
name = request.json[userFields[0]]
list
而要创建一个转换方法? - Daren Thomass = set([1, 2, 3])
v1, v2, v3 = s
print(v1,v2,v3)
#1 2 3
v1, _*
。没有通配符,您需要精确匹配元素数量。但正如前面的答案 https://dev59.com/1HVD5IYBdhLWcg3wL4cA#45803038 中所指出的那样,这会很慢。 - MSalters尝试一下 s.copy().pop()
怎么样?我没有计时,但它应该可以工作,而且很简单。然而,它最适合小集合,因为它会复制整个集合。
另一个选项是使用带有您不关心的值的字典。例如:
poor_man_set = {}
poor_man_set[1] = None
poor_man_set[2] = None
poor_man_set[3] = None
...
你可以将键视为一个集合,只不过它们是数组:
keys = poor_man_set.keys()
print "Some key = %s" % keys[0]
set
之前)保持向后兼容。这可能不是最好的答案,但这是另一种选择。
poor_man_set = {}
poor_man_set[1] = None
poor_man_set[2] = None
poor_man_set[3] = None
poor_man_set = poor_man_set.keys()
next(iter({3,2,1}))
总是返回1
,因此如果您认为它会返回随机元素-它不会。那么也许您只是使用了错误的数据结构?使用场景是什么? - user1685095