2011-02-24 93 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}]}