본문 바로가기

dev

한번에 Python dictionary 여러개 생성

마땅한 파이썬 디버그 툴을 쓰지 않기 때문에 가끔 삽질을 좀 할 때가 있는데, 오늘의 삽질 이야기.

종종 dictionary여러개가 필요해서 dictionary의 list를 U =  [{} for i in rage(10)] 이런식으로 만들어서 사용하곤 했다.

며칠전에 파이썬 레퍼런스를 뒤져보다가 예제 코드에 [{}]*10 이라고 써진 걸 보고는, “오 짧네” 하고 생각없이 썼는데 이게 오늘 아침에 삽질하던 원인이었음.

결론부터 얘기하면

[{}]*10 은 dictionary하나를 생성해서 그 reference 10개의 list를 주고

[{} for i in range(10)] 은 실제로 서로 다른 dictionary 10개를 생성해서 return

실제로 아래처럼 각 object의 주소가 같고 다른걸 확인!

>>> [nx.Graph()]*3

[<networkx.classes.graph.Graph object at 0x7ff74dd4e290>, <networkx.classes.graph.Graph object at 0x7ff74dd4e290>, <networkx.classes.graph.Graph object at 0x7ff74dd4e290>]

>>> [nx.Graph() for i in range(3)]

[<networkx.classes.graph.Graph object at 0x29abdd0>, <networkx.classes.graph.Graph object at 0x29abd90>, <networkx.classes.graph.Graph object at 0x29abe10>]

오늘은 hopefully 삽질 끝.



예전 블로그에 적어두었던 내용인데 생각이 나서 다시 가져옴.

'dev' 카테고리의 다른 글

ndk-build clean 시에 Syntax error 발생할 땐.  (0) 2013.10.02
Data visualization에 관한 글.  (0) 2013.09.30
개발자와 테스터  (0) 2013.09.25
JNI 각 type별 Signature 알아내기  (0) 2013.09.07
git cheet sheet  (0) 2013.03.01