2013-10-16 2 views
2

사전 목록을 CSV에 쓰기가 더 소화 가능한 것으로 조작하는 데 문제가 있습니다. 내가 가장 쉬운 방법을 찾고 싶은, 기본적으로특정 키, 값을 파이썬 사전 목록에서 CSV로 선택

id,key1,key2,key1,key2 
1,value1,value2,value3,value4 

: 이상적으로

dict_example = [{'id':1,'key1':'value1','key2':'value2'},{'id':1,'key1':'value3','key2':'value4'}] 

, 나는 것이 밖으로 CSV 싶습니다 예를 들어, 정말 같은 사전의 목록을 가지고 이것을하는 방법. 이 목록은 내가 작업하고있는 것보다 훨씬 큽니다. 또한 각각의 'id'에는 각각의 'id'에 대해 하나의 행에 모두 포함될 다양한 값을 나타내는 4 개의 사전이 있습니다.

의견이 있으십니까? 값을 다른 형식으로 추출하여이를 수행 할 수있는 방법을 생각할 수는 있지만 사전에 남겨두고 CSV에 쓰는 것이 아닙니다.

편집 :

지금 데이터 형식이 가장 유용 할 수 있습니다 무엇인지 파악해야

. 각 'id'에는 'key1'과 'key2'의 값이 다른 '스테이지'가 있습니다. ID는 지속적입니다.

이 정보를 저장하는 데 유용한 것이 무엇입니까? 더 명쾌하게, 지금 존재하는

예 :

dict = dict_example = [{'id':1,'stage':'stage1','key2':'value1'},{'id':1,'stage':'stage2','key2':'value2'}] 
+2

다른 dict가 있다면 ... 다시 key1, key2를 가지고 있을까요? 매우 유용한 형식으로 보이지 않습니다 ... –

+0

고마워요, 내가 어떻게 저장하고 있는지 다시 생각해야 할 것 같습니다. 내가 겪고있는 문제는 데이터의 스냅 샷을 다른 시점에 가져 가고 있다는 것입니다. 나는 더 많은 정보로 업데이트 할 것이다. – GatesOfDelirium

답변

0

당신은 특정 기준에 그룹에 itertools.groupby을 사용할 수 있습니다 - 귀하의 경우, 'id' :

import itertools 

d = [{'id':1,'key1':'value1','key2':'value2'},{'id':1,'key1':'value3','key2':'value4'}, \ 
     {'id':1,'key4':'value5'}, {'id':2,'key1':'value3','key2':'value4'}] 

for id, group in itertools.groupby(d, lambda x : x['id']): 
    key_line = 'id' 
    values_line = str(id) 
    for g in group: 
     for key in sorted(g.keys()): 
      if key == 'id': 
       continue 
      key_line += ',{0}'.format(key) 
      values_line += ',{0}'.format(g[key]) 

    print key_line 
    print values_line 

이 출력됩니다

id,key1,key2,key1,key2,key4 
1,value1,value2,value3,value4,value5 
id,key1,key2 
2,value3,value4 

... 등

사전의 각 ID에 대해

매우 유용한 출력인지 확실하지 않습니다. 데이터를 처음에 저장하는 방법을 재구성하는 것이 좋습니다.

관련 문제