Skip to main content
 首页 » 编程设计

python之未正确创建以元组集作为值的字典

2025年05月04日15mengfanrong

我已阅读 this但它似乎对我不起作用 -

>>> dict = {} 
>>> dict[ "a" ] = set(("1111","test1")) 
>>> dict 
{'a': set(['1111', 'test1'])} 
>>> dict[ "a" ].add( ("2222","test2")) 
>>> dict 
{'a': set(['1111', 'test1', ('2222', 'test2')])} 

我还期望第一个看起来像元组 - 为什么它被拆分了?

我想在做的时候:

>>> for key,val_set in dict.items() : 
...     for val in val_set : 
...             print val 
... 
1111 
test1 
('2222', 'test2') 

打印 2 件而不是 3 件。

请您参考如下方法:

set() 从一个可迭代对象 中获取值并分别添加每个值。您传入了一个元组,它是一个具有两个值的可迭代对象。

如果您想添加元组本身,您需要将其包装在一个可迭代对象中,例如列表:

set([("1111","test1")]) 

在 Python 3 中,您可以改为使用集合显示来创建新集合:

{("1111","test1")} 

一组显示采用逗号分隔的元素,("1111", "test1") 是这里的一个元组元素。

在另一篇文章中,集合是用集合显示创建的(所以 {tuple1, tuple2, etc.}),答案使用 itertools 函数或一个generator expression生成要处理的 set() 函数的元组序列; a 两者都产生可迭代类型。