2017-12-18 22 views
4

どのようにオブジェクト/ dict(?)プロパティを新しいオブジェクト/ dictに広めることができますか?Python 2.7xにJavascriptのようにオブジェクトスプレッド演算子がありますか?

シンプルな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': []}) 
+0

方法[引数が開梱?]について(https://caisbalderas.com/blog/python-function-unpacking-args-and-kwargs/) – Felipe

+0

'OBJ:あなたは次のように何かをする必要があります。 copy() 'と' new_obj.update({'x': '1'}) ' –

答えて

7

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'} 
+0

これは本当に素晴らしいアプローチです。しかし、私はライン、 'SyntaxError' Pythonの上2.7.35 –

+0

ファイル「」そうだ366 **ドキュメント、 ^ にSyntaxError:私は質問を更新 無効な構文 –

+0

うん、あなたがた実現しなかった@MatthewHarwood Python 2.7で。もしあなたがdict-literalsで動作するようなものを望むのなら、あなたはSOLです。 –

2

あなたがオリジナルのものに基づいてdictを作成し、新しい/オーバーライドキーの開梱引数を行うことでこれを実現することができます

regions.append(dict(doc, **{'lat': '1234', 'lng': '1234'})) 
関連する問題