我创建了一个生成器表达式,该表达式使用的不仅仅是源键,而是字典,如下所示:
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)}
我想知道是否有一个更“Python”的方式来做这样的事情。似乎我遇到的所有遍历列表的标准库函数都会返回与原始列表长度相等或更小的值,但在本例中,我希望遍历扩展的结果。你知道吗
您可以使用多级生成器:
对于这个问题,moreIter(KEYS)返回src的键。所以:
在这种情况下可以使用itertools.product。这实际上取决于加法键的复杂程度:
product
生成元组列表然后
map
使用''.join
函数将每个元组组合成一个字符串(您可以在这里使用列表理解,而不是map
,但我认为这会降低可读性,因为它已经在for
循环中)。你知道吗相关问题 更多 >
编程相关推荐