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

如何使用字典推导式将两个列表合并为嵌套字典?

用字典推导式将两个列表合并为嵌套字典

现有两个列表:

dates = ['2023-04-01', '2023-04-07', '2023-04-17', '2023-04-19', '2023-04-25']
events_name = [
    'PyTexas', 'PyCamp Spain', 'PyData Berlin', 'PyCon US', 'PyLadies Amsterdam']

需要合并成如下格式的嵌套字典:

python_events = {
    0: {'time': '2023-04-01', 'name': 'PyTexas'}, 
    1: {'time': '2023-04-07', 'name': 'PyCamp Spain'},
    2: {'time': '2023-04-17', 'name': 'PyData Berlin'},
    3: {'time': '2023-04-19', 'name': 'PyCon US'},
    4: {'time': '2023-04-25', 'name': 'PyLadies Amsterdam'}}

已通过循环实现:

python_events = {}
for i in range(0, len(dates)):
    python_events[i] = {"time": dates[i], "name": events_name[i]}

尝试用字典推导式但失败,比如:

python_events = {
    i: {"time": date, "name": name for date, name in dict(foo).items()}
    for i, date, name in range(0, len(events))}

正确实现方式

直接用*enumerate*结合*zip*就能写出简洁的字典推导式:

python_events = {
    idx: {"time": date, "name": event}
    for idx, (date, event) in enumerate(zip(dates, events_name))
}

代码说明

  • zip(dates, events_name):把两个列表的元素按位置一一配对,生成('2023-04-01', 'PyTexas')这类元组。
  • enumerate(...):为每一组配对元素添加索引,得到(0, ('2023-04-01', 'PyTexas'))这样的结构。
  • 外层推导式:遍历每个带索引的配对,用idx作为外层字典的键,直接构造包含time和name的子字典即可。

之前写法的问题

  1. range(0, len(events))只能生成单个索引值,无法同时获取date和name,必须用zip关联两个列表的对应元素。
  2. 内层的字典推导完全多余,这里不需要循环,直接写{"time": date, "name": event}就能构造子字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:13:31