[英]What is the best practice to add tuples to a set?
考虑这个例子:
In [44]: exl_set = set(a.node)
In [45]: exl_set
Out[45]: set(['1456030', '-9221969'])
In [46]: exl_set.add(b.node)
In [47]: exl_set
Out[47]: set(['1456030', ('-9227619', '1458170'), '-9221969'])
将长度为 2 的tuples
添加到set
而不用第一次add
它们分开的最佳方法是什么? 结果应如下所示:
Out[48]: set([ ('-9221969','1456030'),('-9227619', '1458170')])
将您的初始节点包装在列表或元组中:
exl_set = set([a.node])
不要将其解释为一系列值。
set()
构造函数将参数解释为可迭代对象,并将该可迭代对象中的所有值添加到集合中; 从文档:
类
set([iterable])
:
返回一个新的 set 或 freezeset 对象,其元素取自iterable
。
演示:
>>> node = ('1456030', '-9221969')
>>> set(node)
set(['1456030', '-9221969'])
>>> set([node])
set([('1456030', '-9221969')])
>>> len(set([node]))
1
或者,创建一个空集并专门使用set.add()
:
exl_set = set()
exl_set.add(a.node)
exl_set.add(b.node)
初始化集合时,参数被视为可迭代的,而不是单个项目。 你可以这样做:
>>>node = (1, 3)
>>>node_set = set([node,]) # initialize a set with a single ilement
>>>node_set
set([(1, 3)])
或者:
>>>node = (1, 4)
>>>node_set = set() # initialize an empty set
>>>node_set.add(node) # add a single element
>>>node_set
set([(1, 4)])
要为其他时间旅行者更新此答案,另一种方法是使用集合文字,这样可以节省之前答案中不必要的包装/展开过程:
node = (1, 2)
n_set = {node}
n_set
输出[17]:{(1, 2)}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.