2011-02-24 83 views
3

我看過遍及互聯網和諮詢了幾本書,但我似乎無法找到一個例子,說明我正在嘗試做什麼。我討厭問這個的,是因爲它感覺像一個真正的基本問題,但我一直在敲打我的頭靠在牆上的最後幾個小時,所以這裏有雲:將元組轉換成字典

我如何把這個:

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]表示法將其分開。這對Python來說非常重要。這是值得您一段時間來回顧列表理解是什麼以及它們如何工作。還請閱讀iter模塊文檔。 – 2011-02-24 09:39:33

+0

列表元素的所有興趣都是具有相同鍵「值」,「標籤」而不是直接元組的值的詞典?對我而言,沒有興趣:它只是在數據結構中添加冗餘信息,然後當您必須使用這些數據時,您必須進行額外的處理才能獲取這些值。如果所有的元組都在模式上(一個值,一個標籤),那麼在每個元素中重複這些信息需要什麼?一個元素中的值和標籤不會自發地交換他們的位置! – eyquem 2011-02-24 10:23:49

回答

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