python 2.7x中是否有类似于Javascript中的对象扩展语法?

2024-04-29 20:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如何传播对象/dict(?)属性并转换成新的对象/dict?

简单的Javascript:

const obj = {x: '2', y: '1'}
const thing = {...obj, x: '1'}
// thing = {x: '1', y: 1}

Python:

regions = []
for doc in locations_addresses['documents']:
   regions.append(
        {
            **doc, # this will not work
            'lat': '1234',
            'lng': '1234',

        }
    )
return json.dumps({'regions': regions, 'offices': []})

Tags: 对象inobjfordoc属性addressesjavascript
2条回答

您可以通过在原始密钥的基础上创建一个dict,然后对新的/重写的密钥进行参数解包来实现此目的:

regions.append(dict(doc, **{'lat': '1234', 'lng': '1234'}))

如果有Python >=3.5,可以在dict文本中使用关键字扩展:

>>> d = {'x': '2', 'y': '1'}
>>> {**d, 'x':1}
{'x': 1, 'y': '1'}

这有时被称为“飞溅”。

如果您使用的是Python2.7,那么就没有等效的。这就是使用超过7年的东西的问题。你得做些类似的事情:

>>> d = {'x': '2', 'y': '1'}
>>> x = {'x':1}
>>> x.update(d)
>>> x
{'x': '2', 'y': '1'}

相关问题 更多 >