Skip to main content
 首页 » 编程设计

python之如何从字典中的 Python 元组键中获取所有值到一个列表中

2025年05月04日11Renyi-Fan

我的问题可能有点奇怪,但我不知道还能怎么说。情况是我有一个以元组为键的字典:

{(1, 2): 'a', (3, 4): 'b', (5, 6): 'c'} 

我现在想要获取字典中元组中所有值的列表(或元组)。所以结果应该是这样的:

[1, 2, 3, 4, 5, 6] 

有谁知道我怎样才能以高效和 Python 式的方式做到这一点?

欢迎所有提示!

[编辑] 看到我得到了很多回复,还有一些额外的问题:

我不关心顺序,但应该删除可能的重复项..

请您参考如下方法:

将键链接在一起,例如列表理解:

[v for key in yourdict for v in key] 

如果你只需要迭代,使用itertools.chain.from_iterable()可以做:

from itertools import chain 
 
for v in chain.from_iterable(yourdict): 

字典没有顺序,因此键中的值也不会按任何特定顺序排列(尽管每个键的 2 个值确实保持连续)。您可以随时对它们进行排序:

sorted(v for key in yourdict for v in key) 

或

sorted(chain.from_iterable(yourdict)) 

如果您不关心顺序但不想重复,则生成一个集合:

{v for key in yourdict for v in key} 

演示:

>>> yourdict = {(1, 2): 'a', (3, 4): 'b', (5, 6): 'c'} 
>>> [v for key in yourdict for v in key] 
[1, 2, 5, 6, 3, 4] 
>>> from itertools import chain 
>>> list(chain.from_iterable(yourdict)) 
[1, 2, 5, 6, 3, 4] 
>>> sorted(v for key in yourdict for v in key) 
[1, 2, 3, 4, 5, 6] 
>>> sorted(chain.from_iterable(yourdict)) 
[1, 2, 3, 4, 5, 6] 

并生成一组:

>>> anotherdict = {(1, 2): 'a', (3, 4): 'b', (4, 2): 'c'} 
>>> {v for key in yourdict for v in key} 
set([1, 2, 3, 4, 5, 6]) 
>>> {v for key in anotherdict for v in key} 
set([1, 2, 3, 4])