在dict中存储多个get.arguments

时间:2014-08-18 20:31:56

标签: python python-2.7

我正在接收html表单数据,并希望将这些值中的两个作为dict存储在一个键中。

我有:

 Data={
       'Name': self.get_argument('Name'),
       'Email': self.get_argument('Email'),
       'Tel': [self.get_arguments('telType[]'),self.get_arguments('tel[]')],
        ......

 }

这会得到'Tel': [[u'Work', u'Home'], [u'123456789', u'0000001111223']]的结果。

如何将其存储为:{u'Work:u'123456789'}

3 个答案:

答案 0 :(得分:5)

您可以使用zip

data = {'Tel': [[u'Work', u'Home'], [u'123456789', u'0000001111223']]}
data["Tel"] = dict(zip(*data["Tel"]))
{'Tel': {u'Home': u'0000001111223', u'Work': u'123456789'}}

zip将每个列表中的相应元素添加到元组:

In [18]: data = {'Tel': [[u'Work', u'Home'], [u'123456789', u'0000001111223']]}

In [19]: zip(*data["Tel"])
Out[19]: [(u'Work', u'123456789'), (u'Home', u'0000001111223')]

dict(*zip)根据元组内容创建键值对:

In [20]: dict(zip(*data["Tel"]))
Out[20]: {u'Home': u'0000001111223', u'Work': u'123456789'}

答案 1 :(得分:3)

self.get_arguments('telType[]')是一个电话号码类型列表。

self.get_arguments('tel[]')是一个电话号码列表。

要将这两者结合在一起,您可以使用zip构建(telType, tel)的元组。然后,您可以通过调用元组列表中的dict将它们转换为字典:

Data={
    # ...
    'Tel': dict(zip(self.get_argument('telType[]'), self.get_arguments('tel[]')))
    # ...
}

答案 2 :(得分:1)

'Tel':{
        self.get_arguments('telType[]')[0] : self.get_arguments('tel[]')[0],
        self.get_arguments('telType[]')[1] : self.get_arguments('tel[]')[1]

      }