Is there an Object spread syntax in python 2.7x like in Javascript?

Как я могу распространить объекты /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': []})

2 ответа

Решение

Если у вас был Python> = 3.5, вы можете использовать расширение ключевых слов в dict буквальный:

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

Это иногда называют "брызгами".

Если вы находитесь на Python 2.7, ну, нет аналога. Это проблема с использованием чего-то, что старше 7 лет. Вы должны будете сделать что-то вроде:

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

Вы можете достичь этого, создав dict на основе исходного, а затем распаковываем аргументы для новых / переопределенных ключей:

regions.append(dict(doc, **{'lat': '1234', 'lng': '1234'}))
Другие вопросы по тегам