You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3:用列表/字典推导式补全字典列表的Likes键

问题解决:为字典列表补全Likes字段

原输入数据

facebook_posts = [
    {'Likes': 21, 'Comments': 2},
    {'Likes': 13, 'Comments': 2, 'Shares': 1},
    {'Likes': 33, 'Comments': 8, 'Shares': 3},
    {'Comments': 4, 'Shares': 2},
    {'Comments': 1, 'Shares': 1},
    {'Likes': 19, 'Comments': 3}
]

需求

为列表中没有Likes键的字典添加{'Likes': 0},优先用列表/字典推导式实现,若有需要提供替代方案。


方法一:列表+字典推导式实现

可以通过字典推导式合并默认字段与原有键值对,再用列表推导式遍历整个列表,一行代码完成:

facebook_posts_new = [{'Likes': 0, **post} if 'Likes' not in post else post for post in facebook_posts]

或者用更直观的dict.get()方法结合推导式:

facebook_posts_new = [
    {'Likes': post.get('Likes', 0), **{k: v for k, v in post.items() if k != 'Likes'}} 
    for post in facebook_posts
]

执行后得到的结果完全符合你的期望:

facebook_posts_new = [
    {'Likes': 21, 'Comments': 2},
    {'Likes': 13, 'Comments': 2, 'Shares': 1},
    {'Likes': 33, 'Comments': 8, 'Shares': 3},
    {'Likes': 0, 'Comments': 4, 'Shares': 2},
    {'Likes': 0, 'Comments': 1, 'Shares': 1},
    {'Likes': 19, 'Comments': 3}
]

你的尝试代码问题分析

你写的代码存在两处关键问题:

  1. 语法错误:列表推导式中for {}是无效写法,循环部分需要遍历可迭代对象的具体元素;
  2. 逻辑错误:facebook_posts[post]['Likes']是错误的索引方式,post是字典元素,不能作为列表索引;判断Likes是否存在应该直接用'Likes' not in post。

替代方案:普通循环实现

如果觉得推导式可读性不足,也可以用普通循环完成,代码更直观:

facebook_posts_new = []
for post in facebook_posts:
    new_post = post.copy()  # 复制原字典,避免修改原始数据
    new_post.setdefault('Likes', 0)  # 键不存在时添加默认值,存在则保留原值
    facebook_posts_new.append(new_post)

内容的提问来源于stack exchange,提问作者Johny_Capuello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21