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

kra*_*r65 1 python dictionary tuples list

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

{(1, 2): 'a', (3, 4): 'b', (5, 6): 'c'}
Run Code Online (Sandbox Code Playgroud)

我现在想要得到dict中元组中所有值的列表(或元组).所以结果应该是这样的:

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

有人知道如何以高效和pythonic的方式做到这一点吗?

欢迎所有提示!

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

我不关心订单,但应该删除可能的重复.

Mar*_*ers 6

将键链在一起,以列表理解为例:

[v for key in yourdict for v in key]
Run Code Online (Sandbox Code Playgroud)

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

from itertools import chain

for v in chain.from_iterable(yourdict):
Run Code Online (Sandbox Code Playgroud)

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

sorted(v for key in yourdict for v in key)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(chain.from_iterable(yourdict))
Run Code Online (Sandbox Code Playgroud)

如果您不关心订单但不想要重复,那么生成一个集合:

{v for key in yourdict for v in key}
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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]
Run Code Online (Sandbox Code Playgroud)

并制作一套:

>>> 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])
Run Code Online (Sandbox Code Playgroud)