'Is there an Object spread syntax in python 2.7x like in Javascript?
How can I spread an objects/dict(?) properties and into a new object/dict?
Simple 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': []})
Solution 1:[1]
If you had Python >=3.5, you can use key-word expansion in dict
literal:
>>> d = {'x': '2', 'y': '1'}
>>> {**d, 'x':1}
{'x': 1, 'y': '1'}
This is sometimes referred to as "splatting".
If you are on Python 2.7, well, there is no equivalent. That's the problem with using something that is over 7 years old. You'll have to do something like:
>>> d = {'x': '2', 'y': '1'}
>>> x = {'x':1}
>>> x.update(d)
>>> x
{'x': '2', 'y': '1'}
Solution 2:[2]
You can achieve this by creating a dict
based on the original one, and then doing argument unpacking for the new/overridden keys:
regions.append(dict(doc, **{'lat': '1234', 'lng': '1234'}))
Note: Works in both python 2 and python 3
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Chandan |