2011-02-24 5 views
3

나는 인터넷 전체를 둘러 보았고 몇 권의 책을 참고했지만 내가 무엇을하려고하는지 보여주는 예를 찾을 수없는 것 같습니다. 나는 정말 기본적인 질문 같은 느낌 SO 때문에이 물어 혐오하지만 난 그래서 여기에 지난 몇 시간은 간다의 벽에 내 머리를 두드리는 있었어요 :튜플을 사전으로 변환하기

내가이 설정 방법은 다음과 같습니다

item = ((100,May),(160,June),(300,July),(140,August)) 
을 이에

:

   { 
       item:[ 
        { 
         value:100, 
         label:'May' 
        }, 
        { 
         value:160, 
         label:'June' 
        }, 
        { 
         value:300, 
         label:'July' 
        }, 
        { 
         value:140, 
         label:'August' 
        } 
       ] 
       } 
+0

당신은 LIS의 목록을 가지고 ts. 목록 이해력을 사용하여 목록을 처리 한 다음 각 요소를 하나의 사전 항목으로 사용할 수 있습니다. [0]과 [1] 표기법을 사용하여 따로 선택하십시오. 이것은 파이썬에서 매우 기본입니다. 목록 중독이 무엇이고 어떻게 작동하는지 검토하는 것이 가치가 있습니다. iter 모듈 설명서를 읽어보십시오. –

+0

목록의 요소가 값의 직접적인 튜플 대신에 'value', 'label'같은 키를 가진 모든 사전입니까? 저에게는 관심이 없습니다. 데이터 구조에 중복 정보를 추가하기 만하면됩니다. 데이터를 사용해야 할 경우에는 값을 얻기 위해 추가 처리를해야합니다. 모든 튜플이 패턴 (값, 레이블)에 있다면, 각 요소에서이 정보를 반복해야 할 필요가 있습니까? 한 요소의 값과 레이블은 자발적으로 자신의 위치를 ​​바꿀 수 없습니다! – eyquem

답변

9
{'item': [dict(value=value, label=label) for value, label in item]} 
0
dict(item=map(lambda x: dict(value=x[0],label=x[1]),item)) 
1
>>> item = ((100,'May'),(160,'June'),(300,'July'),(140,'August')) 
>>> keys = ('value','label') 
>>> dd = {'item' : [dict(zip(keys,pair)) for pair in item]} 
>>> 
>>> import pprint 
>>> pprint.pprint(dd) 
{'item': [{'label': 'May', 'value': 100}, 
      {'label': 'June', 'value': 160}, 
      {'label': 'July', 'value': 300}, 
      {'label': 'August', 'value': 140}]}