我正在接收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'}
?
答案 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]
}