2017-12-18 25 views
4

개체/dict (?) 속성을 새 개체/dict에 어떻게 퍼뜨릴 수 있습니까?Python 2.7x에서 Javascript와 같은 오브젝트 스프레드 연산자가 있습니까?

간단한 자바 스크립트 :

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

파이썬 :

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

.

파이썬 2.7을 사용하고 있다면, 이에 상응하는 것은 없습니다. 그것은 7 세가 넘는 무언가를 사용할 때의 문제입니다. 당신은 같은 것을해야 할 것이다 : [? 인수 풀기] 방법에 대해

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

이것은 정말 좋은 접근법입니다. 그러나, 나는 라인,'SyntaxError' 파이썬 2.7.x –

+0

파일 ""지고있어 366 ** 문서, ^ 구문 에러 : 나는이 질문을 업데이트 잘못된 구문 –

+0

그래, 당신은 몰랐어요 @MatthewHarwood 파이썬 2.7에서. You'r SOL은 dict-literals와 함께 작동하는 것을 원할 경우에 사용합니다. –

2

당신은 원래 기반으로 dict를 생성 한 다음 새/오버라이드 (override) 키에 대한 풀고 인수를 수행하여이를 달성 할 수

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