拆分值为列表的Python字典为两个独立字典的更优实现方法
Python字典拆分的Pythonic实现方案
方案1:字典推导式(最推荐,绝大多数场景适用)
dicta = {key: val[0] for key, val in resultdict.items()} dictb = {key: val[1] for key, val in resultdict.items()}
该写法是Python社区公认的符合编码风格的实现,语法简洁可读性强,逻辑和你原有循环完全等价,性能差异几乎可以忽略,适合所有中小数据量的拆分场景。
方案2:单次遍历写法(适用于超大字典性能优化)
如果你的resultdict包含十万级及以上的键,想要减少遍历次数降低性能开销,可以用以下单次遍历写法:
dicta, dictb = {}, {} for key, (val_a, val_b) in resultdict.items(): dicta[key], dictb[key] = val_a, val_b
相比原写法做了元组解包优化,代码更紧凑,全程只遍历一次字典。
方案3:函数式写法
如果你偏好函数式风格,也可以用zip实现:
keys = resultdict.keys() vals_a, vals_b = zip(*resultdict.values()) dicta = dict(zip(keys, vals_a)) dictb = dict(zip(keys, vals_b))
该写法同样只遍历一次字典,不过可读性稍弱于前两种方案。
注意:以上所有方案都和你原实现的约束一致,需要保证
resultdict的每个value都是长度≥2的可迭代对象,否则会抛出解包或索引错误。
内容的提问来源于stack exchange,提问作者Novice At Everything
相关产品推荐
相关产品推荐

