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

如何在Python 3中实现类似ES6 JavaScript的字典(Dict)展开(Spread)语法?

问题:Python中是否有类似ES6对象展开(Spread)的语法?

我需要在Python中复刻一段ES6 JavaScript的字典展开逻辑,对应的ES6代码如下:

const geo = {'lat': 123, 'lon': 456};
const time = "2021-05-30T13:18:03+00:00"
const spreadedObject = {...geo, time: time}
console.log(spreadedObject);

输出结果为:{ lat: 123, lon: 456, time: '2021-05-30T13:18:03+00:00' }

请问Python中是否存在类似的Spread展开语法,能够实现上述相同的功能?


回答

当然有!Python从3.5版本开始就支持了类似ES6对象展开的字典解包语法,而且还有几种不同的实现方式,刚好能完美复刻你这段JS代码的逻辑:

1. 最贴近ES6的写法:**字典解包运算符

这是和ES6中...展开语法最对应的写法,直接在创建新字典时解包现有字典的键值对,同时添加新的内容:

geo = {'lat': 123, 'lon': 456}
time_str = "2021-05-30T13:18:03+00:00"  # 避开内置的time模块命名
spreaded_dict = {**geo, 'time': time_str}
print(spreaded_dict)

输出结果和你的JS代码完全一致:

{'lat': 123, 'lon': 456, 'time': '2021-05-30T13:18:03+00:00'}

注意:如果原字典和新添加的键有重复,后面的键值对会覆盖前面的,这和ES6的Spread行为完全一致。

2. 使用字典的copy() + update()方法

如果你需要更明确的分步操作,可以先复制原字典,再用update()方法添加新的键值对:

spreaded_dict = geo.copy()
spreaded_dict.update({'time': time_str})

这种方法适合需要对原字典做更多修改的场景,但要注意update()是原地修改字典,所以必须先复制原字典,避免影响原数据。

3. Python 3.9+的合并运算符|

从Python 3.9开始,新增了字典合并运算符|,可以直接合并两个字典,写法更简洁:

spreaded_dict = geo | {'time': time_str}

如果需要原地合并,可以用|=运算符:

geo |= {'time': time_str}  # 直接在原geo字典上添加键值对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:57:37