python set union操作与命名元组的表现不佳
发布时间:2020-12-20 12:02:54 所属栏目:Python 来源:网络整理
导读:我想在 python中创建一组namedtuple,能够使用union操作动态添加元素. 以下代码片段创建了一组namedtuple,其行为很好. from collections import namedtupleB = namedtuple('B','name x')b1 = B('b1',90)b2 = B('b2',92)s = set([b1,b2])print(s) 打印 {B(name
我想在
python中创建一组namedtuple,能够使用union操作动态添加元素.
以下代码片段创建了一组namedtuple,其行为很好. from collections import namedtuple B = namedtuple('B','name x') b1 = B('b1',90) b2 = B('b2',92) s = set([b1,b2]) print(s) 打印 {B(name='b1',x=90),B(name='b2',x=92)} 现在,如果我创建另一个namedtuple并使用union操作将其添加到我的set中,它就不会按预期运行. b3 = B('b3',93) s = s.union(b3) print(s) 代码段打印以下输出. {93,B(name='b1',x=92),'b3'} 预期产量应为: {B(name='b1',B(name='b3',x=93)} 我误解了API吗? 解决方法
union期望一个set(或一个列表或另一个iterable),但你传递一个名为tuple,它本身是一个可迭代的,但是它提供了值,所以你将这个值与值合并.试试这个:
s = s.union({b3}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |