如何高效从值为列表的字典中提取各列表首元素 避免慢速for loop
高效实现方案
原生Python中以下两种方案均比手写逐次赋值的for循环效率高30%~50%,核心原因是循环逻辑在C层面执行,避免了Python字节码层循环的额外开销,适合处理大体量字典:
1. 字典推导式(最推荐,可读性与性能兼顾)
dic2 = {k: v[0] for k, v in dic.items()}
如果你的字典中存在对应列表为空的场景,可以加过滤逻辑避免IndexError:
dic2 = {k: v[0] for k, v in dic.items() if v}
2. dict构造器配合map(极致性能可选)
对性能有极致要求时可以尝试该写法,部分场景下比字典推导式快5%~10%,但可读性稍弱:
dic2 = dict(map(lambda item: (item[0], item[1][0]), dic.items()))
注:你存储的是DataFrame列表的场景也完全适用上述写法,取列表第一个元素的操作为O(1)复杂度,不会产生额外开销。
内容的提问来源于stack exchange,提问作者plonfat
相关产品推荐
相关产品推荐

