假设如下:
>>> s = set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
如何获得的值(任意值)出来s而不做s.pop()?我想把这个项留在集合中,直到我确定我可以删除它 - 我只能在异步调用另一个主机后才能确定.
又快又脏:
>>> elem = s.pop()
>>> s.add(elem)
Run Code Online (Sandbox Code Playgroud)
但是你知道更好的方法吗?理想情况下在恒定的时间.
我有
x = {'a':set([1]) , 'b':set([2]), 'c':set([3]) }
Run Code Online (Sandbox Code Playgroud)
保证集合中只有一个元素.我需要将其转换为
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
以下作品:
x1 = {k:x[k].pop() for k in x.keys()} OR
x1 = {k:next(iter(x[k])) for k in x.keys()}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为pop()这里正在修改原始集合.我需要帮助.
functools.reduce它.有没有办法“获取”集合中唯一的项目而无需先将其转换为列表?
s = set([u'http://imdb.com/title/tt0118583/'])
first_item = list(s)[0]
# u'http://imdb.com/title/tt0118583/'
Run Code Online (Sandbox Code Playgroud)