是否有Pythonic方法迭代"扩展"源列表?

cam*_*ilk 3 python

我创建了一个生成器表达式,它构建了一个超过源键的字典,如下所示:

def moreIter(names):
    for name in names:
        yield name
        yield name + "Bar"

KEYS = ("a", "b")

src = {"a": 1, "aBar": 2, "b": 3, "bBar": 4, "c": 0, "cBar": 1, "d": 10}
d = {key: src[key] for key in moreIter(KEYS)}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更"pythonic"的方法来做这样的事情.似乎我遇到的所有标准库函数迭代遍历列表将返回与原始列表相等或更小的长度,但在这种情况下,我想迭代扩展的结果.

Tig*_*kT3 7

您可以使用多级生成器:

src = {"a": 1, "aBar": 2, "b": 3, "bBar": 4}
d = {key: src[key] for item in 'ab' for key in (item, item+'Bar')}
Run Code Online (Sandbox Code Playgroud)