我想提取二维字典中第二层的所有键,但Python解释器报错NameError。我的期望结果是['aa','bb','cc','aaa','bbb','ccc']。
>>> adict
defaultdict(<class 'dict'>, {'b': {'aaa': 444, 'ccc': 666, 'bbb': 555}, 'a': {'aa': 111, 'cc': 333, 'bb': 222}})
>>> all = [ele for ele in adict[ww].keys() for ww in ['a', 'b']]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ww' is not defined
set().union(*adict.values())
这样的代码也许更适合...(它将所有键作为一个集合提取出来,而不是一个列表 - 如果您不想指定确切的键并且不想要重复项,这可能很有用) - Jon Clements.keys()
是不必要的,而且可能很耗费资源(在Python 2中)。另外,set(itertools.chain.from_iterable(adict.values()))
也可以起同样的作用。 - AChampion