Python 如何将包含嵌套序列的字典展平为包含所有值和键的单个序列?

Python 如何将包含嵌套序列的字典展平为包含所有值和键的单个序列?,python,Python,我有一个可行的解决方案,返回一个集合: >>> a = {'a': {'1', '2', '3'}, 'b': {'4', '5', '6'}, 'c': {'7', '8', '9'}} >>> def flatten_nested(a): temp = set( [value for value_set in a.values() for value in value_set] )

我有一个可行的解决方案,返回一个集合:

>>> a = {'a': {'1', '2', '3'}, 'b': {'4', '5', '6'}, 'c': {'7', '8', '9'}}

>>> def flatten_nested(a):
        temp = set(
            [value for value_set in a.values() for value in value_set]
        )
        return temp | a.keys()

>>> flatten_nested(a)
>>> {'1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c'}

我想知道Python中是否已经内置了一些类似于itertools.chain的函数来做类似的事情?

我想更简单的是:

>>> set.union(set(a), *a.values())
{'1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c'}
或者,通过bound方法,这里有同样的东西:

>>> set(a).union(*a.values())
{'1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c'}

如果已经设置了这些值,那么这是最简单的方法,但可以用于列表、元组等可重用项。。您必须映射到一个集合,即
set(a).union(映射(set,a.values())
,或者您可以将所有值与键视图进行并集:

from itertools import chain
def flatten_nested(a):
    return a.keys() | chain(*a.values()) # a.viewkeys() python2

@wim,他们可能正在使用python3,其中.keys是dictview对象,因此不需要set调用,尽管
返回temp.union(a)
对python2和3都有效。有趣的是,dict_keys视图支持带有chain对象的操作数
,但实际的set不支持!