如何从字典列表中提取指定键的指定位置值构建新字典?
从字典列表提取指定元素构建新字典
嘿,这个需求很明确,我来帮你实现这个字典的构建!先回顾下你的输入和预期输出:
输入示例
my_list = [ { 'a': (2.6, 0.08, 47.0, 1), 'b': (5.7, 0.05, 1) }, { 'a': (2.6, 0.08, 47.0, 2), 'b': (5.7, 0.06, 2) } ]
预期输出
new_dic = {'value': (0.05, 0.06), 'number': (1, 2)}
解决方案代码
用生成器表达式就能高效完成这个提取工作,代码简洁还省内存:
my_list = [ { 'a': (2.6, 0.08, 47.0, 1), 'b': (5.7, 0.05, 1) }, { 'a': (2.6, 0.08, 47.0, 2), 'b': (5.7, 0.06, 2) } ] new_dic = { 'value': tuple(item['b'][1] for item in my_list), 'number': tuple(item['b'][-1] for item in my_list) } # 验证输出 print(new_dic) # 输出: {'value': (0.05, 0.06), 'number': (1, 2)}
代码解释
item['b'][1]:Python的索引从0开始,所以这里取每个字典中b对应元组的第二个元素,也就是你要的value值item['b'][-1]:用负索引-1直接取元组的最后一个元素,比写固定的索引2更灵活——就算以后b对应的元组长度变了,也能准确拿到最后一个值- 用
tuple()把生成器的结果转成元组,和你预期的输出格式完全匹配
如果你的字典列表很大,生成器表达式比普通列表推导更友好,它不会一次性把所有元素加载到内存里,而是按需生成,性能更好。
内容的提问来源于stack exchange,提问作者HABLOH
相关产品推荐
相关产品推荐

