我正在尝试从列表和一个函数生成一个字典,该函数从所述列表的元素计算键值对,例如
def transform(element):
key = f"{element}^2"
value = element**2
return key, value
elements = [1, 2, 3]
elements_dict = {k: v for (k, v) in [transform(elem) for elem in elements]}
# elements_dict should be {'1^2': 1, '2^2': 4, '3^2': 9}
然而,这个元素列表可能非常大,需要及时处理,这使得生成中间数组既不切实际又效率低下。
有没有办法做到这一点,以便从原始列表中懒惰地读取元素,由函数转换为键值对,并存储在字典中而不生成任何中间结构?
该transform
功能的使用也是不可协商的;这里提供的是一个最小的工作示例,但是它们的实际功能要复杂得多,不能简单地作为字典理解的一部分编写。
您可以使用内置map
函数。
elements_dict = {k: v for (k, v) in map(transform, elements)}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句